UNPKG

sync-dotenv

Version:

Keep your .env in sync with .env.example

169 lines (147 loc) 7.25 kB
#!/usr/bin/env node var $3CdBH$child_process = require("child_process"); var $3CdBH$meow = require("meow"); var $3CdBH$path = require("path"); var $3CdBH$fs = require("fs"); var $3CdBH$os = require("os"); var $3CdBH$parsedotenv = require("parse-dotenv"); var $3CdBH$globby = require("globby"); var $3CdBH$pkgconf = require("pkg-conf"); function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } function $parcel$defineInteropFlag(a) { Object.defineProperty(a, '__esModule', {value: true, configurable: true}); } function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } $parcel$defineInteropFlag(module.exports); $parcel$export(module.exports, "default", () => $e7b60d70fee81a38$export$2e2bcd8739ae039); const $de2b25064d321747$var$DEFAULT_ENV_PATH = $3CdBH$path.resolve(process.cwd(), ".env"); const $de2b25064d321747$var$DEFAULT_SAMPLE_ENV = $3CdBH$path.resolve(process.cwd(), ".env.example"); const $de2b25064d321747$export$ffc21166d570a16 = (path)=>($parcel$interopDefault($3CdBH$fs)).existsSync(path) ; const $de2b25064d321747$export$a223f0b5790835b7 = (obj)=>Object.keys(obj) ; const $de2b25064d321747$export$cb15672420afdef7 = (parsed)=>$de2b25064d321747$export$a223f0b5790835b7(parsed).map((key)=>`${key}=${parsed[key] || ""}` ).join(($parcel$interopDefault($3CdBH$os)).EOL).replace(/(__\w+_\d+__=)/g, "") ; const $de2b25064d321747$export$fe13601f8194f1a3 = (path, parsedEnv)=>{ try { ($parcel$interopDefault($3CdBH$fs)).writeFileSync(path, $de2b25064d321747$export$cb15672420afdef7(parsedEnv)); } catch (e) { throw new Error(`Sync failed. ${e.message}`); } }; const $de2b25064d321747$export$3368712d4a9d23e5 = (obj)=>{ const objCopy = { ...obj }; Object.keys(objCopy).forEach((key)=>{ if (objCopy[key].includes("#")) { if (objCopy[key].match(/(".*"|'.*')/g)) { const objArr = objCopy[key].split(/(".*"|'.*')/); objCopy[key] = objArr.slice(-1)[0].trim(); } else { const objArr = objCopy[key].split("#"); objCopy[key] = `#${objArr.slice(-1)[0]}`; } return; } /* istanbul ignore else */ if (!key.startsWith("__COMMENT_")) objCopy[key] = ""; }); return objCopy; }; const $de2b25064d321747$export$a38d427a1a937627 = async (env1, envExample, config = { })=>{ let ignoreKeys = config.preserve || []; const uniqueKeys = new Set($de2b25064d321747$export$a223f0b5790835b7(env1)); const uniqueKeysArray = Array.from(uniqueKeys); let uniqueFromSource = uniqueKeysArray.map((key)=>{ if (key.startsWith("__COMMENT_")) return { [key]: env1[key] }; return { [key]: envExample[key] || "" }; }); let presevedVars = $de2b25064d321747$export$a223f0b5790835b7(envExample).map((key)=>({ [key]: envExample[key] }) ).filter((env)=>{ return ignoreKeys.length && ignoreKeys.includes($de2b25064d321747$export$a223f0b5790835b7(env)[0]); }); return [ ...uniqueFromSource, ...presevedVars ]; }; const $de2b25064d321747$export$5ec1cd26d9dc5917 = async (envPath, envExamplePath, initialConfig)=>{ // We do this so we can pass it via test as well let config = initialConfig || await ($parcel$interopDefault($3CdBH$pkgconf))("sync-dotenv"); // Set defaults config.comments = typeof config.comments === 'undefined' ? true : config.comments; config.emptyLines = typeof config.emptyLines === 'undefined' ? true : config.comments; let sourceEnv = $de2b25064d321747$export$3368712d4a9d23e5(($parcel$interopDefault($3CdBH$parsedotenv))(envPath, { emptyLines: !!config.emptyLines, comments: !!config.comments })); let targetEnv = ($parcel$interopDefault($3CdBH$parsedotenv))(envExamplePath); const uniqueVars = await $de2b25064d321747$export$a38d427a1a937627(sourceEnv, targetEnv, config); let envCopy = { }; uniqueVars.forEach((env)=>{ let [key] = $de2b25064d321747$export$a223f0b5790835b7(env); envCopy[key] = env[key]; }); $de2b25064d321747$export$fe13601f8194f1a3(envExamplePath, envCopy); }; const $de2b25064d321747$var$exit = (message, code = 1)=>Promise.reject({ message: message, code: code }) ; const $de2b25064d321747$export$1a886b42ea7d54b7 = async (sampleEnv, source, samples)=>{ if (sampleEnv && (sampleEnv === ".env" || $3CdBH$path.basename(sampleEnv) === ".env")) return $de2b25064d321747$var$exit("Cannot sync .env with .env"); const SAMPLE_ENV_PATHS = !samples ? [ $3CdBH$path.resolve(process.cwd(), sampleEnv || $de2b25064d321747$var$DEFAULT_SAMPLE_ENV) ] : ($parcel$interopDefault($3CdBH$globby)).sync(samples).map((sample)=>$3CdBH$path.resolve(process.cwd(), sample) ); let envPath = source ? $de2b25064d321747$export$ffc21166d570a16(source) ? source : null : $de2b25064d321747$var$DEFAULT_ENV_PATH; if (envPath === null) return $de2b25064d321747$var$exit(`${source} not found`); if (!source && !$de2b25064d321747$export$ffc21166d570a16(envPath)) return $de2b25064d321747$var$exit(".env doesn't exists"); if (!SAMPLE_ENV_PATHS.length) return $de2b25064d321747$var$exit(`${samples} did not match any file`); if (!$de2b25064d321747$export$ffc21166d570a16(SAMPLE_ENV_PATHS[0])) return $de2b25064d321747$var$exit(`${sampleEnv || $3CdBH$path.basename($de2b25064d321747$var$DEFAULT_SAMPLE_ENV)} not found`); const sourcePath = envPath; for (let samplePath of SAMPLE_ENV_PATHS)await $de2b25064d321747$export$5ec1cd26d9dc5917(sourcePath, samplePath); return Promise.resolve(SAMPLE_ENV_PATHS.join(" ")); }; const $e7b60d70fee81a38$var$cli = ($parcel$interopDefault($3CdBH$meow))(` Usage: sync-dotenv [options] Options: -e, --env file .......... .env file location -s, --sample file ....... alternate sample env file to sync with -S, --samples "file.*" ........ alternate sample env files pattern to sync with Note: If options is omitted, sync-dotenv will attempt to sync .env with .env.example in the current working directory. Examples: $ sync-dotenv $ sync-dotenv --sample .env.development $ sync-dotenv --env server/.env --sample example.env $ sync-dotenv --samples ".env.*" `, { flags: { sample: { type: "string" } } }); const { sample: $e7b60d70fee81a38$var$sample , s: $e7b60d70fee81a38$var$s , env: $e7b60d70fee81a38$var$env , e: $e7b60d70fee81a38$var$e , samples: $e7b60d70fee81a38$var$samples , S: $e7b60d70fee81a38$var$S } = $e7b60d70fee81a38$var$cli.flags; $de2b25064d321747$export$1a886b42ea7d54b7($e7b60d70fee81a38$var$sample || $e7b60d70fee81a38$var$s, $e7b60d70fee81a38$var$env || $e7b60d70fee81a38$var$e, $e7b60d70fee81a38$var$samples || $e7b60d70fee81a38$var$S).then((sampleEnv)=>($parcel$interopDefault($3CdBH$child_process)).exec(`git add ${sampleEnv}`) ).catch(({ message: message , code: code })=>{ console.log(message); process.exit(code); }); var $e7b60d70fee81a38$export$2e2bcd8739ae039 = $de2b25064d321747$export$1a886b42ea7d54b7; //# sourceMappingURL=index.js.map