UNPKG

@mason-api/cli

Version:

CLI assistant for Mason builder

315 lines (255 loc) 9.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.login = login; exports.getIdToken = getIdToken; exports.getUserId = getUserId; exports.getAPIKey = getAPIKey; exports.handler = exports.builder = exports.desc = exports.command = void 0; var _fs = _interopRequireDefault(require("fs")); var _os = _interopRequireDefault(require("os")); var _safe = _interopRequireDefault(require("colors/safe")); var _utils = require("../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var command = 'login [email] [password]'; exports.command = command; var desc = 'Log in using mason username and password to retrieve api key'; exports.desc = desc; var builder = function builder(yargs) { yargs.positional('email', { describe: 'Username to log in with' }).positional('password', { describe: 'Password for that username' }); }; exports.builder = builder; var handler = /*#__PURE__*/ function () { var _ref = _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee(argv) { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", login(argv.email, argv.password)); case 1: case "end": return _context.stop(); } } }, _callee); })); return function handler(_x) { return _ref.apply(this, arguments); }; }(); exports.handler = handler; function login(_x2, _x3) { return _login.apply(this, arguments); } function _login() { _login = _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee2(e, p) { var email, password, json; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.t0 = e; if (_context2.t0) { _context2.next = 5; break; } _context2.next = 4; return (0, _utils.prompt)(' Email: '); case 4: _context2.t0 = _context2.sent; case 5: email = _context2.t0; _context2.t1 = p; if (_context2.t1) { _context2.next = 11; break; } _context2.next = 10; return (0, _utils.promptPassword)('Password: '); case 10: _context2.t1 = _context2.sent; case 11: password = _context2.t1; _context2.prev = 12; _context2.next = 15; return (0, _utils.sendLoginRequest)(email, password); case 15: json = _context2.sent; console.log(_safe.default.green("Welcome ".concat(json.user.firstName, " ").concat(json.user.lastName, "!"))); console.log('Your api key was remembered in ~/.masonrc\n'); _fs.default.writeFileSync("".concat(_os.default.homedir(), "/.masonrc"), JSON.stringify(json, 2, 2)); return _context2.abrupt("return", json); case 22: _context2.prev = 22; _context2.t2 = _context2["catch"](12); console.log(_safe.default.red('Login failed')); console.log('Try again with a different email and password.'); process.exit(); case 27: return _context2.abrupt("return", null); case 28: case "end": return _context2.stop(); } } }, _callee2, null, [[12, 22]]); })); return _login.apply(this, arguments); } function getIdToken(_x4) { return _getIdToken.apply(this, arguments); } function _getIdToken() { _getIdToken = _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee3(dontLogIn) { return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; return _context3.abrupt("return", JSON.parse(_fs.default.readFileSync("".concat(_os.default.homedir(), "/.masonrc"))).user.id_token); case 4: _context3.prev = 4; _context3.t0 = _context3["catch"](0); if (dontLogIn) { _context3.next = 11; break; } _context3.next = 9; return login(); case 9: if (!_context3.sent) { _context3.next = 11; break; } return _context3.abrupt("return", JSON.parse(_fs.default.readFileSync("".concat(_os.default.homedir(), "/.masonrc"))).user.id_token); case 11: return _context3.abrupt("return", null); case 12: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 4]]); })); return _getIdToken.apply(this, arguments); } function getUserId() { return _getUserId.apply(this, arguments); } function _getUserId() { _getUserId = _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee4() { return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.prev = 0; return _context4.abrupt("return", JSON.parse(_fs.default.readFileSync("".concat(_os.default.homedir(), "/.masonrc"))).user.id); case 4: _context4.prev = 4; _context4.t0 = _context4["catch"](0); return _context4.abrupt("return", null); case 7: case "end": return _context4.stop(); } } }, _callee4, null, [[0, 4]]); })); return _getUserId.apply(this, arguments); } function getAPIKey(_x5) { return _getAPIKey.apply(this, arguments); } function _getAPIKey() { _getAPIKey = _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee6(dontLogIn) { return regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: return _context6.abrupt("return", new Promise( /*#__PURE__*/ function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee5(resolve) { var key; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: key = process.env.MASON_API_KEY; if (key) { _context5.next = 21; break; } _context5.prev = 2; resolve(JSON.parse(_fs.default.readFileSync("".concat(_os.default.homedir(), "/.masonrc"))).user.apiKey); _context5.next = 19; break; case 6: _context5.prev = 6; _context5.t0 = _context5["catch"](2); if (dontLogIn) { _context5.next = 18; break; } console.log('API Key was not provided via $MASON_API_KEY'); console.log('We need you to sign in to Mason first'); console.log(''); _context5.next = 14; return login(); case 14: if (!_context5.sent) { _context5.next = 16; break; } resolve(JSON.parse(_fs.default.readFileSync("".concat(_os.default.homedir(), "/.masonrc"))).user.apiKey); case 16: _context5.next = 19; break; case 18: resolve(); case 19: _context5.next = 22; break; case 21: resolve(key); case 22: case "end": return _context5.stop(); } } }, _callee5, null, [[2, 6]]); })); return function (_x6) { return _ref2.apply(this, arguments); }; }())); case 1: case "end": return _context6.stop(); } } }, _callee6); })); return _getAPIKey.apply(this, arguments); }