UNPKG

cqr-env

Version:

Have multiple env files that can be encrypted and included in version control

44 lines (34 loc) 1.35 kB
#! /usr/bin/env node /* imports */ const globby = require('globby') /* lib */ const checkErrors = require('./pkg/lib/checkErrors') const posix = require('./pkg/lib/posix') /* modules */ const cryptor = require('./pkg/cryptor') function initialize (argv) { const [node, script, mode, gloob, medium, ...envvarOrPwfiles] = process.argv if (!mode || !gloob || !medium || !envvarOrPwfiles) throw new Error('Invalid usage') let envvarOrPwfile if (envvarOrPwfiles.length > 1) envvarOrPwfile = envvarOrPwfiles.reduce(function (o, v, i) { if (i % 2 === 1) return o o[v] = envvarOrPwfiles[i + 1] return o }, {}) else envvarOrPwfile = envvarOrPwfiles[0] checkErrors(require('./pkg/schemas/gloob.schema').validate(gloob), 'gloob') checkErrors(require('./pkg/schemas/envvar.schema').validate(envvarOrPwfile), 'envvar') // same schema let files if (typeof gloob === 'string') files = globby.sync(posix(gloob)) else files = globby.sync(gloob.map(g => posix(g))) if (!files.length) throw new Error('No files were matched') let m switch (medium) { case '-v': m = 'var'; break case '-f': m = 'file' } if (mode == '-e') cryptor.encryptFiles(files, m, envvarOrPwfile) else if (mode == '-d') cryptor.decryptFiles(files, m, envvarOrPwfile) else throw new Error('Invalid mode') } initialize(process.argv)