UNPKG

vinz

Version:

Enables secure storage of credentials right in your repo using AWS KMS.

77 lines (55 loc) 2.51 kB
#! /usr/bin/env node 'use strict'; 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(); }