UNPKG

r8s-cli

Version:

A command line tool for Reaction Commerce to be used with kubernetes

223 lines (163 loc) 7.28 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.apps = undefined; var _forEach2 = require('lodash/forEach'); var _forEach3 = _interopRequireDefault(_forEach2); var _omit2 = require('lodash/omit'); var _omit3 = _interopRequireDefault(_omit2); var apps = exports.apps = function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(yargs) { var subCommands, args, name, remote, path, notInReactionDir, packageFile, env, conf, allApps, blue, magenta, table; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _utils.Log.args(yargs.argv); subCommands = yargs.argv._; args = (0, _omit3.default)(yargs.argv, ['_', '$0']); name = args.name, remote = args.remote, path = args.path; if (subCommands[1]) { _context.next = 6; break; } return _context.abrupt('return', _utils.Log.default(helpMessage)); case 6: if (!(subCommands[1] === 'create')) { _context.next = 15; break; } if (name) { _context.next = 9; break; } return _context.abrupt('return', _utils.Log.error('Error: App name required')); case 9: if (remote !== false) { notInReactionDir = function notInReactionDir() { _utils.Log.error('\nNot in a Reaction app directory.\n'); _utils.Log.info('To create a new local project, run: ' + _utils.Log.magenta('reaction init') + '\n'); }; packageFile = void 0; try { packageFile = _fsExtra2.default.readJSONSync('./package.json'); } catch (e) { notInReactionDir(); process.exit(1); } if (packageFile.name !== 'reaction') { notInReactionDir(); process.exit(1); } } env = {}; // convert any supplied env vars into an object if (Array.isArray(args.e)) { args.e.forEach(function (val) { var conf = val.split('='); env[conf[0]] = conf[1]; }); } else if (typeof args.e === 'string') { conf = args.e.split('='); env[conf[0]] = conf[1]; } if (args.settings) { env.METEOR_SETTINGS = (0, _utils.getStringFromFile)(args.settings); } if (args.registry) { env.REACTION_REGISTRY = (0, _utils.getStringFromFile)(args.registry); } return _context.abrupt('return', (0, _create2.default)({ name: name.toLowerCase(), env: env, remote: remote })); case 15: if (!(subCommands[1] === 'list')) { _context.next = 20; break; } _context.next = 18; return (0, _list2.default)(); case 18: allApps = _context.sent; if (allApps.length !== 0) { blue = _utils.Log.blue, magenta = _utils.Log.magenta; table = new _cliTable2.default({ head: [blue('App ID'), blue('Name'), blue('Default URL'), blue('Custom Domain'), blue('Group'), blue('Created By')] }); _utils.Log.info('\nApps List\n'); allApps.forEach(function (app) { var row = []; (0, _forEach3.default)((0, _omit3.default)(app, ['git']), function (val, key) { if (key === 'domains' && Array.isArray(val) && val.length > 1) { row.push(magenta(val.length > 1 ? val.join('\n') : val)); } else if (key === 'domain') { row.push(magenta(val ? 'https://' + val : '')); } else if (key === 'group') { row.push(magenta(val.name)); } else if (key === 'user') { row.push(magenta(val.username)); } else { row.push(magenta(val || '')); } }); table.push(row); }); _utils.Log.info(table.toString()); _utils.Log.info(''); } else { _utils.Log.info('\nNo apps found.\n'); _utils.Log.info('Run ' + _utils.Log.magenta('reaction apps create --name <appname>') + ' to create one.\n'); } case 20: if (!(subCommands[1] === 'delete')) { _context.next = 24; break; } if (name) { _context.next = 23; break; } return _context.abrupt('return', _utils.Log.error('App name required')); case 23: return _context.abrupt('return', (0, _delete2.default)({ name: name })); case 24: if (!(subCommands[1] === 'clone')) { _context.next = 30; break; } if (name) { _context.next = 27; break; } return _context.abrupt('return', _utils.Log.error('App name required')); case 27: _context.next = 29; return (0, _utils.ensureSSHKeysExist)(); case 29: return _context.abrupt('return', (0, _clone2.default)({ name: name, path: path })); case 30: case 'end': return _context.stop(); } } }, _callee, this); })); return function apps(_x) { return _ref.apply(this, arguments); }; }(); var _fsExtra = require('fs-extra'); var _fsExtra2 = _interopRequireDefault(_fsExtra); var _cliTable = require('cli-table2'); var _cliTable2 = _interopRequireDefault(_cliTable); var _utils = require('../../utils'); var _list = require('./list'); var _list2 = _interopRequireDefault(_list); var _create = require('./create'); var _create2 = _interopRequireDefault(_create); var _delete = require('./delete'); var _delete2 = _interopRequireDefault(_delete); var _clone = require('./clone'); var _clone2 = _interopRequireDefault(_clone); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var helpMessage = '\nUsage:\n\n reaction apps [command]\n\n Commands:\n list List your app deployments\n create Create a new app deployment on Launchdock\n delete Remove an existing app deployment from Launchdock\n clone Git clone an existing app deployment from Launchdock\n';