1 | #!/usr/bin/env node
|
2 | "use strict";
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | const yargs = require("yargs");
|
5 | const colors_1 = require("../colors");
|
6 | const script_1 = require("../script");
|
7 | const 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 | });
|
12 | function 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 |
|
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 |
|
29 |
|
30 | },
|
31 | encKeyVar: {
|
32 | type: 'string',
|
33 | desc: 'Env variable name to get `encKey` from.',
|
34 | default: 'SECRET_ENCRYPTION_KEY',
|
35 | },
|
36 |
|
37 |
|
38 |
|
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 |
|
60 | return { dir: dir, file, encKey, del, jsonMode };
|
61 | }
|