vinz
Version:
Enables secure storage of credentials right in your repo using AWS KMS.
77 lines (55 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _prompt = require('prompt');
var _prompt2 = _interopRequireDefault(_prompt);
var _colors = require('colors');
var _colors2 = _interopRequireDefault(_colors);
var _awsConfig = require('./lib/aws-config');
var _awsConfig2 = _interopRequireDefault(_awsConfig);
var _awsKms = require('./lib/aws-kms');
var _awsKms2 = _interopRequireDefault(_awsKms);
var _package = require('../package.json');
var _io = require('./lib/io');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class CLI {
parse() {
_commander2.default.version(_package.version).option('-p, --profile <profile>', 'Specify a ~/.aws/credentials profile to use', /^(\w+)$/).option('-a, --access-key-id <accessKeyId>', 'Override AWS access key found in env or in ~/.aws', /^([A-Z0-9]+)$/).option('-s, --secret-access-key <secretAccessKey>', 'Override AWS secret key found in env or in ~/.aws', /^([A-Za-z0-9\\]+)$/).option('-r, --region <region>', 'Override AWS service region found in env or in ~/.aws', /^[a-z]{2}-[a-z]{4,9}-[1-2]$/).option('-e, --encrypt <secretName>', 'Store an encrypted secret in ./secrets/secretName', /^([^\0\/]+)$/i).parse(process.argv);
if (_commander2.default.encrypt) {
this.encryptByCLI(_commander2.default);
} else {
console.error('No arguments passed. You probably wanted `vinz --encrypt`.\n' + 'Otherwise, check out `vinz --help`.');
}
}
encryptByCLI() {
let cmdr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _io.prepSecretDir)();
const AWS = new _awsConfig2.default(cmdr.accessKeyId, cmdr.secretAccessKey, cmdr.region, cmdr.profile);
_prompt2.default.message = _colors2.default.green('vinz');
_prompt2.default.start();
_prompt2.default.get({
properties: {
secretValue: {
required: true,
description: `Enter the secret to encrypt as '${ cmdr.encrypt }'. (typing hidden)`,
hidden: true
}
}
}, (err, result) => {
if (err) {
throw new Error(err);
} else {
_awsKms2.default.encryptAndStore(AWS.KMS, cmdr.encrypt, result.secretValue);
}
});
}
}
exports.default = CLI; /* istanbul ignore next */
if (require.main === module) {
const cli = new CLI();
cli.parse();
}