UNPKG

env2ts

Version:

Dead simple env file parsing for TypeScript

84 lines (83 loc) 3.24 kB
"use strict"; 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;