r8s-cli
Version:
A command line tool for Reaction Commerce to be used with kubernetes
125 lines (92 loc) • 4.38 kB
JavaScript
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;
}();
;