UNPKG

@szzbmy/lowcode-cli

Version:

🐇 lowcode-cli is an efficient cli tool for Rabbitpre plugin component secondary development. ❤️

114 lines (113 loc) 4.34 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* * 命令暴露 * @Author: Jiyu Shao * @Date: 2021-08-12 11:24:02 * @Last Modified by: chubiao Ni * @Last Modified time: 2022-04-14 17:27:23 */ const react_1 = __importStar(require("react")); const ink_1 = require("ink"); const update_notifier_1 = __importDefault(require("update-notifier")); const command_1 = require("../constants/command"); const deploy_1 = __importDefault(require("./deploy")); const debug_1 = __importDefault(require("./debug")); const login_1 = __importDefault(require("./login")); const create_1 = __importDefault(require("./create")); const logger_1 = __importDefault(require("../utils/logger")); const command_helper_1 = require("../utils/command-helper"); const config_1 = __importDefault(require("../config")); const components_1 = require("../components"); /** * 命令处理器 MAPPING */ const COMMAND_HANDLER_MAPPING = { [command_1.COMMAND.DEPLOY]: deploy_1.default, [command_1.COMMAND.DEBUG]: debug_1.default, [command_1.COMMAND.LOGIN]: login_1.default, [command_1.COMMAND.CREATE]: create_1.default, }; function useCheckUpdate() { const [status, setStatus] = (0, react_1.useState)('checking'); (0, react_1.useEffect)(() => { const checkUpdate = async () => { const updater = new update_notifier_1.default.UpdateNotifier({ pkg: config_1.default.cliPkgJson, updateCheckInterval: 0, shouldNotifyInNpmScript: true, }); try { const updateInfo = (await updater.fetchInfo()); if (updateInfo.type === 'latest') { setStatus('latest'); return; } updater.config.set('update', updateInfo); updater.check(); updater.notify({ message: `发现新版本 ${updateInfo.latest} !\n\n运行 npm i @szzbmy/lowcode-cli@${updateInfo.latest} -g 命令来更新`, }); // 不是最新版本,render 会返回 null,process 会自动退出 setStatus('outdate'); } catch (e) { logger_1.default.error('检查更新错误', e); setStatus('error'); } }; checkUpdate(); }, [setStatus]); return status; } /** * App */ function App(props) { const { cli } = props; const { input } = cli; const commandHandler = COMMAND_HANDLER_MAPPING[input[0]]; if (typeof commandHandler === 'undefined') { (0, command_helper_1.reportUnknownCommand)(input[0]); process.exit(1); } const status = useCheckUpdate(); switch (status) { case 'checking': return (react_1.default.createElement(ink_1.Text, null, react_1.default.createElement(ink_1.Text, { color: "green" }, react_1.default.createElement(components_1.Spinner, { type: "dots" }), "\u68C0\u67E5\u66F4\u65B0\u4E2D..."))); case 'latest': case 'error': return commandHandler(cli); default: return null; } } function Main(cli) { return (0, ink_1.render)(react_1.default.createElement(App, { cli: cli })); } exports.default = Main;