UNPKG

@vortex.so/cli

Version:

CLI to interact with Vortex.

61 lines (55 loc) 1.91 kB
'use strict'; const execa = require('execa'); require('node:process'); const c = require('chalk'); require('figures'); require('jiti'); const index = require('../../utils/log/index.cjs'); const ship_manifest = require('../ship/ship.manifest.cjs'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; } const c__default = /*#__PURE__*/_interopDefaultCompat(c); const log = new index.Log("Vault"); async function getEnv(env) { const loader = log.wait(); try { const { name, handle, org } = ship_manifest.getManifest("vortex.yaml"); if (!handle) throw new Error("Missing handle."); if (!org) throw new Error("Missing org."); loader.persist( `Getting secrets for ${c__default.bold.green(env)} environment of ${c__default.bold.green( name )}...` ); const getValues = await execa.execaCommand( `vault kv get -format=json vars/${org}/${handle}/${env}`, { shell: true, env: { VAULT_ADDR: "https://vault.vortex.so" } } ); if (getValues.stderr) loader.persist(c__default.gray(getValues.stderr)); const resp = JSON.parse(getValues.stdout); const secrets = resp?.data?.data; if (!secrets) throw new Error("No secrets found."); const variables = Object.keys(secrets).map((key) => `${key}="${secrets[key]}"`).join("\n"); const saveValues = await execa.execaCommand( `echo '${variables}' > .env.${env}`, { shell: true } ); if (saveValues.stderr) loader.persist(c__default.gray(saveValues.stderr)); const file = c__default.bold.green(`.env.${env}`); loader.ok(`Secrets have been generated into ${file}!`); } catch (error) { loader.fail(c__default.gray(error?.message || "Something is failed.")); } } class Vault { static getEnv = getEnv; } exports.Vault = Vault; exports.getEnv = getEnv;