UNPKG

1.8 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.secretsEncrypt = void 0;
4const path = require("path");
5const js_lib_1 = require("@naturalcycles/js-lib");
6const fs = require("fs-extra");
7const globby = require("globby");
8const colors_1 = require("../colors");
9const crypto_util_1 = require("../security/crypto.util");
10/**
11 * Encrypts all files in given directory (except *.enc), saves encrypted versions as filename.ext.enc.
12 * Using provided encKey.
13 */
14function secretsEncrypt(pattern, file, encKey, del = false, jsonMode = false) {
15 const patterns = file
16 ? [file]
17 : [
18 ...pattern,
19 `!**/*.enc`, // excluding already encoded
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}
43exports.secretsEncrypt = secretsEncrypt;