env2ts
Version:
Dead simple env file parsing for TypeScript
84 lines (83 loc) • 3.24 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseEnvFile = exports.installDotenv = exports.isDotenvInstalled = void 0;
var chalk_1 = __importDefault(require("chalk"));
var cross_spawn_1 = __importDefault(require("cross-spawn"));
var fs_1 = __importDefault(require("fs"));
var log_update_1 = __importDefault(require("log-update"));
var isDotenvInstalled = function () {
var _a, _b;
var installed = false;
try {
var packageJson = JSON.parse(fs_1.default.readFileSync("./package.json").toString());
if (!packageJson) {
throw new Error("");
}
if (((_a = packageJson.devDependencies) === null || _a === void 0 ? void 0 : _a.dotenv) ||
((_b = packageJson.dependencies) === null || _b === void 0 ? void 0 : _b.dotenv)) {
installed = true;
}
}
catch (_c) { }
return installed;
};
exports.isDotenvInstalled = isDotenvInstalled;
var Manager;
(function (Manager) {
Manager["npm"] = "npm";
Manager["yarn"] = "yarn";
Manager["none"] = "none";
})(Manager || (Manager = {}));
var installDotenv = function (manager) {
return new Promise(function (resolve, reject) {
var depsCommand = "";
var depsArgs = [];
switch (manager) {
case "npm":
depsCommand = "npm";
depsArgs.push.apply(depsArgs, ["install", "dotenv"]);
break;
case "yarn":
depsCommand = "yarn";
depsArgs.push.apply(depsArgs, ["add", "dotenv"]);
break;
case "none":
default:
break;
}
if (depsCommand && depsArgs) {
console.log("\n");
var child = cross_spawn_1.default(depsCommand, depsArgs, {
stdio: "inherit",
});
child.on("close", function (code) {
if (code !== 0) {
// eslint-disable-next-line prefer-promise-reject-errors
reject({ command: depsCommand + " " + depsArgs.join(" ") });
return;
}
resolve("\n" + chalk_1.default.green("✔") + " Successfully installed " + chalk_1.default.cyan("dotenv"));
});
}
else {
resolve("\n" + chalk_1.default.green("✔") + " Skipping " + chalk_1.default.cyan("dotenv") + " installation");
}
});
};
exports.installDotenv = installDotenv;
var parseEnvFile = function (contents) {
var _a;
var rawContent = contents;
// Remove comments
rawContent = rawContent.replace(/#.*/gm, "");
// Remove blank lines
rawContent = rawContent.replace(/(^[ \t]*\n)/gm, "");
log_update_1.default(chalk_1.default.blue("➤") + " Collecting env variables");
// Get an array of the vars without the value and trim whitespace
var varArr = (_a = rawContent.match(/^([^=])+/gm)) === null || _a === void 0 ? void 0 : _a.map(function (v) { return v.trim(); });
return varArr || [];
};
exports.parseEnvFile = parseEnvFile;