UNPKG

env-toolkit

Version:

This is a package that can generate or compare env files for your project.

38 lines (37 loc) 2.12 kB
import chalk from 'chalk'; import { appendFileSync } from 'fs'; import { join } from 'path'; import { DEFAULT_FILE_NAME } from './constant.js'; import { findDifference, formatBlame, readExistingEnvFile } from './utils.js'; const { green, red, bgGray } = chalk; export function updateOrCompareEnv(envDirectory, fileName, allEnvs, compare, update) { var _a, _b, _c, _d, _e; try { const envFilePath = join(envDirectory, fileName || DEFAULT_FILE_NAME); const currentEnvs = readExistingEnvFile(envFilePath); const difference = findDifference(currentEnvs, allEnvs); if (!((_a = difference === null || difference === void 0 ? void 0 : difference.added) === null || _a === void 0 ? void 0 : _a.length) && !((_b = difference === null || difference === void 0 ? void 0 : difference.removed) === null || _b === void 0 ? void 0 : _b.length)) { console.log(green('The current .env file is up to date!')); return; } if (compare) { console.log(bgGray('The current .env file is out of date!')); console.log(green(`New variables: ${(_c = difference === null || difference === void 0 ? void 0 : difference.added) === null || _c === void 0 ? void 0 : _c.length}`)); console.log(red(`Removed variables: ${(_d = difference === null || difference === void 0 ? void 0 : difference.removed) === null || _d === void 0 ? void 0 : _d.length}`)); console.log(formatBlame(difference)); } else if (update && ((_e = difference === null || difference === void 0 ? void 0 : difference.added) === null || _e === void 0 ? void 0 : _e.length)) { const newVariables = `\n# Newly added env variables (${new Date()}) \n${difference.added .map((varName) => `${varName}=`) .join('\n')}\n`; appendFileSync(envFilePath, newVariables); console.log(green('The .env file has been updated!')); } else { console.log(red('No changes were made to the .env')); } } catch (err) { throw new Error(err); } }