UNPKG

2.15 kBJavaScriptView Raw
1#!/usr/bin/env node
2"use strict";
3Object.defineProperty(exports, "__esModule", { value: true });
4const yargs = require("yargs");
5const colors_1 = require("../colors");
6const script_1 = require("../script");
7const secrets_decrypt_util_1 = require("../secret/secrets-decrypt.util");
8(0, script_1.runScript)(() => {
9 const { dir, file, encKey, del, jsonMode } = getDecryptCLIOptions();
10 (0, secrets_decrypt_util_1.secretsDecrypt)(dir, file, encKey, del, jsonMode);
11});
12function getDecryptCLIOptions() {
13 require('dotenv').config();
14 let { dir, file, encKey, encKeyVar, del, jsonMode } = yargs.options({
15 dir: {
16 type: 'array',
17 desc: 'Directory with secrets. Can be many',
18 // demandOption: true,
19 default: './secret',
20 },
21 file: {
22 type: 'string',
23 desc: 'Single file to decrypt. Useful in jsonMode',
24 },
25 encKey: {
26 type: 'string',
27 desc: 'Encryption key',
28 // demandOption: true,
29 // default: process.env.SECRET_ENCRYPTION_KEY!,
30 },
31 encKeyVar: {
32 type: 'string',
33 desc: 'Env variable name to get `encKey` from.',
34 default: 'SECRET_ENCRYPTION_KEY',
35 },
36 // algorithm: {
37 // type: 'string',
38 // default: 'aes-256-cbc',
39 // },
40 del: {
41 type: 'boolean',
42 desc: 'Delete source files after encryption/decryption. Be careful!',
43 },
44 jsonMode: {
45 type: 'boolean',
46 desc: 'JSON mode. Encrypts only json values, not the whole file',
47 default: false,
48 },
49 }).argv;
50 if (!encKey) {
51 encKey = process.env[encKeyVar];
52 if (encKey) {
53 console.log(`using encKey from env.${(0, colors_1.dimGrey)(encKeyVar)}`);
54 }
55 else {
56 throw new Error(`encKey is required. Can be provided as --encKey or env.SECRET_ENCRYPTION_KEY (see readme.md)`);
57 }
58 }
59 // `as any` because @types/yargs can't handle string[] type properly
60 return { dir: dir, file, encKey, del, jsonMode };
61}