@vortex.so/cli
Version:
CLI to interact with Vortex.
61 lines (55 loc) • 1.91 kB
JavaScript
;
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;