UNPKG

r8s-cli

Version:

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

125 lines (92 loc) 4.38 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _filter2 = require('lodash/filter'); var _filter3 = _interopRequireDefault(_filter2); var _dns = require('dns'); var _dns2 = _interopRequireDefault(_dns); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _list = require('../apps/list'); var _list2 = _interopRequireDefault(_list); var _utils = require('../../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new _bluebird2.default(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 _bluebird2.default.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var resolveCname = _bluebird2.default.promisify(_dns2.default.resolveCname); exports.default = function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(_ref2) { var name = _ref2.name, domain = _ref2.domain; var apps, app, ingress, cNames, gql, result; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: apps = _utils.Config.get('global', 'launchdock.apps', []); app = (0, _filter3.default)(apps, function (a) { return a.name === name; })[0]; if (app) { _context.next = 4; break; } return _context.abrupt('return', _utils.Log.error('\nApp deployment not found')); case 4: ingress = _utils.Config.get('cli', 'launchdock.ingress'); cNames = void 0; _context.prev = 6; _context.next = 9; return resolveCname(domain); case 9: cNames = _context.sent; _context.next = 19; break; case 12: _context.prev = 12; _context.t0 = _context['catch'](6); _utils.Log.error('\n' + _context.t0.toString()); _utils.Log.warn('\nFailed to verify domain: ' + _utils.Log.blue(domain)); if (_context.t0.toString().includes('queryCname ENOTFOUND')) { _utils.Log.warn('Please ensure it is spelled correctly and that its DNS is pointed at: ' + _utils.Log.blue(ingress)); process.exit(1); } _utils.Log.warn('\nPlease ensure that its DNS is pointed at: ' + _utils.Log.blue(ingress)); process.exit(1); case 19: if (!cNames.includes(ingress)) { _context.next = 29; break; } gql = new _utils.GraphQL(); _context.next = 23; return gql.fetch('\n mutation domainSet($appId: ID! $domain: String!) {\n domainSet(appId: $appId, domain: $domain) {\n name\n domain\n }\n }\n ', { appId: app._id, domain: domain }); case 23: result = _context.sent; if (!!result.errors) { result.errors.forEach(function (err) { _utils.Log.error(err.message); }); process.exit(1); } _utils.Log.info('\nAdded new domain ' + _utils.Log.magenta(domain) + ' to app ' + _utils.Log.magenta(name) + '\n'); _context.next = 28; return (0, _list2.default)(); case 28: return _context.abrupt('return', result.data.domainSet); case 29: _utils.Log.error('\nERROR: It looks like \'' + domain + '\' is not yet pointed at \'' + ingress + '\'.'); _utils.Log.error('This is required for app routing and automatic SSL certificates. Please try again once your DNS is updated.\n'); process.exit(1); case 32: case 'end': return _context.stop(); } } }, _callee, this, [[6, 12]]); })); function domainSet(_x) { return _ref.apply(this, arguments); } return domainSet; }();