UNPKG

@onboardbase/cli

Version:

[![Version](https://img.shields.io/npm/v/@onboardbase/cli.svg)](https://www.npmjs.com/package/@onboardbase/cli) [![Downloads/week](https://img.shields.io/npm/dw/@onboardbase/cli.svg)](https://www.npmjs.com/package/@onboardbase/cli) [![License](https://img

104 lines (103 loc) 3.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecretsAccessService = void 0; const chalk = require("chalk"); const utils_1 = require("../../utils"); const Table = require("cli-table"); const YAML = require("yaml"); const types_1 = require("../../common/types"); const base_secrets_service_1 = require("./base-secrets.service"); const errors_1 = require("../../common/errors"); class SecretsAccessService extends base_secrets_service_1.BaseSecretsAccessService { constructor(configManager) { super(configManager); } async initialize({ args, flags }) { var _a; const format = args.format; const currentProject = this._getFromProjectConfigOrThrow({ userConfig: flags.project, configPath: "setup.project", envName: types_1.ENV_NAMES.PROJECT, }); await this.accessManager.handleUserAdminPrivileges(currentProject); const currentEnvironment = (_a = this._getFromProjectConfigOrThrow({ userConfig: flags.environment, configPath: "setup.environment", envName: types_1.ENV_NAMES.ENVIRONMENT, })) !== null && _a !== void 0 ? _a : "development"; if (!currentProject) throw new errors_1.BadInputError("Please specify project name"); const supportedFormats = [ "--json", "--docker", "--raw", "--yaml", "--env", "--bash", ]; if (this._formatIsUnsupported({ format, supportedFormats })) { const message = `${chalk.red("Onboardbase Error:")} invalid format. Valid formats are json, env, yaml, docker, raw, bash`; throw new errors_1.BadInputError(message); } const mergedEnvs = await this.getMergedSecrets({ projectName: currentProject, environmentName: currentEnvironment, }); this._handleLoggingSecretsInDifferentFormats({ format, env: mergedEnvs }); } _handleLoggingSecretsInDifferentFormats(input) { const { format, env } = input; switch (format) { case "--bash": this._logSecretsAsBashEnvValues(env); break; case "--raw": this._logSecretsAsTable(env); break; case "--json": case undefined: this._logSecretsAsJSON(env); break; case "--yaml": this._logSecretsAsYAML(env); break; case "--env": case "--docker": this._logSecretsAsEnvValues(env); break; } } _logSecretsAsBashEnvValues(env) { let allSecrets = ""; Object.keys(env).map((secretKey) => { allSecrets += `export ${secretKey}="${env[secretKey]}"\n`; }); console.log(allSecrets); } _logSecretsAsTable(env) { const configTableData = { head: ["NAME", "VALUE"], colWidths: [40, 65], }; const configTable = new Table(configTableData); Object.keys(env).map((secretKey) => { configTable.push([secretKey, env[secretKey]]); }); console.log(configTable.toString()); } _logSecretsAsJSON(env) { console.log(JSON.stringify(env)); } _logSecretsAsYAML(env) { console.log(YAML.stringify(env)); } _logSecretsAsEnvValues(env) { console.log((0, utils_1.parseObjectToEnv)(env)); } _formatIsUnsupported(input) { const { format, supportedFormats } = input; return format && !supportedFormats.includes(format); } } exports.SecretsAccessService = SecretsAccessService;