cqr-env
Version:
Have multiple env files that can be encrypted and included in version control
44 lines (34 loc) • 1.35 kB
JavaScript
/* 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)