UNPKG

@aminya/dotenv-vault

Version:

A secrets manager for .env files – from the same people that pioneered dotenv.

77 lines (76 loc) 2.88 kB
"use strict"; 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;