UNPKG

@naturalcycles/nodejs-lib

Version:
44 lines (43 loc) 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.secretsEncrypt = void 0; const path = require("path"); const js_lib_1 = require("@naturalcycles/js-lib"); const fs = require("fs-extra"); const colors_1 = require("../colors"); const index_1 = require("../index"); const crypto_util_1 = require("../security/crypto.util"); /** * Encrypts all files in given directory (except *.enc), saves encrypted versions as filename.ext.enc. * Using provided encKey. */ function secretsEncrypt(pattern, file, encKey, del = false, jsonMode = false) { const patterns = file ? [file] : [ ...pattern, `!**/*.enc`, // excluding already encoded ]; const filenames = index_1.fastGlob.sync(patterns); let encFilename; filenames.forEach(filename => { if (jsonMode) { (0, js_lib_1._assert)(filename.endsWith('.plain.json'), `${path.basename(filename)} MUST end with '.plain.json'`); encFilename = filename.replace('.plain', ''); const json = (0, crypto_util_1.encryptObject)(JSON.parse(fs.readFileSync(filename, 'utf8')), encKey); fs.writeFileSync(encFilename, JSON.stringify(json, null, 2)); } else { const plain = fs.readFileSync(filename); const enc = (0, crypto_util_1.encryptRandomIVBuffer)(plain, encKey); encFilename = `${filename}.enc`; fs.writeFileSync(encFilename, enc); } if (del) { fs.unlinkSync(filename); } console.log(` ${path.basename(filename)} > ${path.basename(encFilename)}`); }); console.log(`encrypted ${(0, colors_1.yellow)(filenames.length)} files in (${(0, colors_1.dimGrey)(pattern.join(' '))})`); } exports.secretsEncrypt = secretsEncrypt;