@aminya/dotenv-vault
Version:
A secrets manager for .env files – from the same people that pioneered dotenv.
77 lines (76 loc) • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LocalKeysService = void 0;
const tslib_1 = require("tslib");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const dotenv = tslib_1.__importStar(require("dotenv"));
const vars_1 = require("../../vars");
const core_1 = require("@oclif/core");
const append_to_ignore_service_1 = require("../../services/append-to-ignore-service");
const log_service_1 = require("../../services/log-service");
const abort_service_1 = require("../../services/abort-service");
class LocalKeysService {
constructor(attrs = {}) {
this.cmd = attrs.cmd;
this.environment = attrs.environment;
this.log = new log_service_1.LogService({ cmd: attrs.cmd });
this.abort = new abort_service_1.AbortService({ cmd: attrs.cmd });
}
async run() {
new append_to_ignore_service_1.AppendToIgnoreService().run();
if (vars_1.vars.missingEnvKeys) {
this.abort.missingEnvKeys();
}
if (vars_1.vars.emptyEnvKeys) {
this.abort.emptyEnvKeys();
}
const keysMsg = 'Listing .env.vault decryption keys from .env.keys';
core_1.CliUx.ux.action.start(`${chalk_1.default.dim(this.log.pretextLocal)}${keysMsg}`);
await this.keys();
}
async keys() {
const keys = this.keyRows;
core_1.CliUx.ux.action.stop();
if (this.environment) {
const environment = this.environment.toLowerCase();
const result = keys.find(function (row) {
return row.environment === environment.toLowerCase();
});
this.log.plain(result.key);
}
else {
// note that table truncates on smaller terminal windows
core_1.CliUx.ux.table(keys, {
environment: {
header: 'environment',
},
key: {
header: 'DOTENV_KEY',
},
});
this.log.plain('');
this.log.plain(`Set ${chalk_1.default.bold('DOTENV_KEY')} on your server`);
}
}
get keysName() {
return '.env.keys';
}
get keyRows() {
// Read and parse from .env.keys
const parsed = (dotenv.configDotenv({ path: this.keysName }).parsed || {});
const rows = [];
for (const parsedKey in parsed) {
if (Object.prototype.hasOwnProperty.call(parsed, parsedKey)) {
const key = parsed[parsedKey];
const environment = parsedKey.replace('DOTENV_KEY_', '').toLowerCase();
const row = {
environment: environment,
key: key,
};
rows.push(row);
}
}
return rows;
}
}
exports.LocalKeysService = LocalKeysService;