UNPKG

bearicorn

Version:

Cli for Bearicorn app

437 lines (360 loc) 13.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.constructInit = constructInit; var _inquirer = _interopRequireDefault(require("inquirer")); var _index = require("../utils/index.js"); var _echo = require("../utils/echo.js"); var _ask = require("../utils/ask.js"); var _chalk = _interopRequireDefault(require("chalk")); 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 sleep = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(ms) { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", new Promise(function (resolve) { return setTimeout(resolve, ms); })); case 1: case "end": return _context.stop(); } } }, _callee); })); return function sleep(_x) { return _ref.apply(this, arguments); }; }(); var pickAnApp = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(choices) { var name; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: console.info("\n Pick an app:"); choices.forEach(function (choice) { return console.info(" > ", _chalk["default"].green(choice)); }); _context2.next = 4; return (0, _ask.ask)("\n Select an app: "); case 4: name = _context2.sent; if (!(choices.indexOf(name) === -1)) { _context2.next = 8; break; } _context2.next = 8; return pickAnApp(choices); case 8: case "end": return _context2.stop(); } } }, _callee2); })); return function pickAnApp(_x2) { return _ref2.apply(this, arguments); }; }(); function ensuresManifestExists() { return _ensuresManifestExists.apply(this, arguments); } function _ensuresManifestExists() { _ensuresManifestExists = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() { var print, localManifestFile, manifest, response, apps, app; return regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: print = (0, _echo.echo)(); localManifestFile = _index.home.getLocalManifest(); print.start("Ensuring local manifest does exist"); _context7.next = 5; return _index.fs.doesFolderExists(localManifestFile); case 5: manifest = _context7.sent; _context7.next = 8; return sleep(1000); case 8: if (!manifest) { _context7.next = 11; break; } print.succeed("Ensuring local manifest does exist — IT DOES."); return _context7.abrupt("return"); case 11: print.fail("Ensuring local manifest does exist — IT DOES NOT."); _context7.next = 14; return (0, _index.fetch)("GET", "/apps/list"); case 14: response = _context7.sent; apps = response.apps.map(function (app) { return app.name; }); _context7.next = 18; return pickAnApp(apps); case 18: app = _context7.sent; _context7.next = 21; return _index.fs.createLocalConfigFile(app); case 21: case "end": return _context7.stop(); } } }, _callee7); })); return _ensuresManifestExists.apply(this, arguments); } var ensuresHomeFolderExist = /*#__PURE__*/function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { var print, homeFolder, doesAlreadyExist; return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: print = (0, _echo.echo)(); print.start("Checking if home configuration already exist"); _context3.next = 4; return sleep(1000); case 4: homeFolder = _index.home.getHomeFolder(); _context3.next = 7; return _index.fs.doesFolderExists(homeFolder); case 7: doesAlreadyExist = _context3.sent; if (!doesAlreadyExist) { _context3.next = 11; break; } print.succeed("Home configuration was already located on your disk"); return _context3.abrupt("return"); case 11: _context3.next = 13; return _index.fs.createFolder(homeFolder); case 13: print.succeed("Home configuration was added"); case 14: case "end": return _context3.stop(); } } }, _callee3); })); return function ensuresHomeFolderExist() { return _ref3.apply(this, arguments); }; }(); var ensuresUserIsAuthenticated = /*#__PURE__*/function () { var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { var print, tokenFile; return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: print = (0, _echo.echo)(); print.start("Ensuring user is already authentificated"); _context4.next = 4; return _index.fs.doesFolderExists(_index.home.getTokenFilePath()); case 4: tokenFile = _context4.sent; _context4.next = 7; return sleep(1000); case 7: if (tokenFile) { _context4.next = 11; break; } print.fail("User is not authentificated yet"); _context4.next = 11; return loginUser(); case 11: print.succeed("User does already have TOKEN file in his profile"); case 12: case "end": return _context4.stop(); } } }, _callee4); })); return function ensuresUserIsAuthenticated() { return _ref4.apply(this, arguments); }; }(); function loginUser() { return _loginUser.apply(this, arguments); } function _loginUser() { _loginUser = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() { var _yield$inquirer$promp, username, passcode, print, response; return regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: _context8.next = 2; return _inquirer["default"].prompt([{ type: "input", message: "Enter a username:", name: "username" }, { type: "password", message: "Enter a password:", name: "passcode", mask: "*" }]); case 2: _yield$inquirer$promp = _context8.sent; username = _yield$inquirer$promp.username; passcode = _yield$inquirer$promp.passcode; print = (0, _echo.echo)(); print.start("Contacting server for authentification"); _context8.next = 9; return (0, _index.fetch)("POST", "/auth/login", { username: username, passcode: passcode }); case 9: response = _context8.sent; _context8.next = 12; return sleep(500); case 12: if (!response.userDoesNotExistYet) { _context8.next = 15; break; } print.fail("Sorry, but this user does not exist"); return _context8.abrupt("return", process.exit(0)); case 15: _context8.next = 17; return _index.fs.createFile(_index.home.getTokenFilePath(), response.cli.token); case 17: print.succeed("Sorry, but this user does not exist"); case 18: case "end": return _context8.stop(); } } }, _callee8); })); return _loginUser.apply(this, arguments); } var validateExistingToken = /*#__PURE__*/function () { var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { var print, token, response; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: print = (0, _echo.echo)(); print.start("Validating TOKEN existing if it's not expired or broken"); _context5.next = 4; return sleep(1000); case 4: _context5.next = 6; return _index.fs.readFile(_index.home.getTokenFilePath()); case 6: token = _context5.sent; _context5.next = 9; return (0, _index.fetch)("POST", "/auth/jsonwebtoken", { token: token }); case 9: response = _context5.sent; if (response.token) { _context5.next = 18; break; } print.fail("Current token has expired, please login again"); _context5.next = 14; return _index.fs.unlinkFolder(_index.home.getTokenFilePath()); case 14: _context5.next = 16; return loginUser(); case 16: _context5.next = 19; break; case 18: print.succeed("Validating TOKEN existing if it's not expired or broken. Was valid."); case 19: case "end": return _context5.stop(); } } }, _callee5); })); return function validateExistingToken() { return _ref5.apply(this, arguments); }; }(); var hasInternetConnection = /*#__PURE__*/function () { var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { var print, response; return regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: print = (0, _echo.echo)(); print.start("Checking internet connection"); _context6.next = 4; return sleep(1000); case 4: _context6.next = 6; return (0, _index.fetch)("GET", "/")["catch"](function () { print.fail("We can't reach Bearicorn servers, try to browse bearicorn.com in your browser"); return process.exit(1); }); case 6: response = _context6.sent; if (response) { print.succeed("Internet connection is OK"); } case 8: case "end": return _context6.stop(); } } }, _callee6); })); return function hasInternetConnection() { return _ref6.apply(this, arguments); }; }(); function constructInit() { return _constructInit.apply(this, arguments); } function _constructInit() { _constructInit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9() { return regeneratorRuntime.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: _context9.next = 2; return hasInternetConnection(); case 2: _context9.next = 4; return ensuresHomeFolderExist(); case 4: _context9.next = 6; return ensuresUserIsAuthenticated(); case 6: _context9.next = 8; return validateExistingToken(); case 8: _context9.next = 10; return ensuresManifestExists(); case 10: case "end": return _context9.stop(); } } }, _callee9); })); return _constructInit.apply(this, arguments); }