1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.secretsEncrypt = void 0;
|
4 | const path = require("path");
|
5 | const js_lib_1 = require("@naturalcycles/js-lib");
|
6 | const fs = require("fs-extra");
|
7 | const globby = require("globby");
|
8 | const colors_1 = require("../colors");
|
9 | const crypto_util_1 = require("../security/crypto.util");
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | function secretsEncrypt(pattern, file, encKey, del = false, jsonMode = false) {
|
15 | const patterns = file
|
16 | ? [file]
|
17 | : [
|
18 | ...pattern,
|
19 | `!**/*.enc`,
|
20 | ];
|
21 | const filenames = globby.sync(patterns);
|
22 | let encFilename;
|
23 | filenames.forEach(filename => {
|
24 | if (jsonMode) {
|
25 | (0, js_lib_1._assert)(filename.endsWith('.plain.json'), `${path.basename(filename)} MUST end with '.plain.json'`);
|
26 | encFilename = filename.replace('.plain', '');
|
27 | const json = (0, crypto_util_1.encryptObject)(JSON.parse(fs.readFileSync(filename, 'utf8')), encKey);
|
28 | fs.writeFileSync(encFilename, JSON.stringify(json, null, 2));
|
29 | }
|
30 | else {
|
31 | const plain = fs.readFileSync(filename);
|
32 | const enc = (0, crypto_util_1.encryptRandomIVBuffer)(plain, encKey);
|
33 | encFilename = `${filename}.enc`;
|
34 | fs.writeFileSync(encFilename, enc);
|
35 | }
|
36 | if (del) {
|
37 | fs.unlinkSync(filename);
|
38 | }
|
39 | console.log(` ${path.basename(filename)} > ${path.basename(encFilename)}`);
|
40 | });
|
41 | console.log(`encrypted ${(0, colors_1.yellow)(filenames.length)} files in (${(0, colors_1.dimGrey)(pattern.join(' '))})`);
|
42 | }
|
43 | exports.secretsEncrypt = secretsEncrypt;
|