UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

135 lines (134 loc) 5.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const types_1 = require("../types"); const logger_1 = require("../utils/logger"); const is_plugin_project_1 = require("../utils/is-plugin-project"); const get_plugin_info_1 = require("../api/get-plugin-info"); const types_2 = require("../v1/types"); const model_1 = require("../v1/model"); const project_1 = __importDefault(require("../v1/model/project")); const start_1 = require("../v2/services/start"); const release_1 = require("../v2/services/release"); const build_1 = require("../v2/services/build"); const init_1 = require("../v2/services/init"); const config_1 = require("../v2/services/config"); const update_1 = require("../v2/services/update"); (async () => { const options = (0, commander_1.createCommand)() .option('--command <command>', 'Execute command name') .option('--payload <payload>', 'Execute payload json') .parse(process.argv) .opts(); const command = options.command; const payload = JSON.parse(options.payload); // 初始化命令仅能根据 payload 查询插件信息后识别 v1 v2 if (command === types_1.ECommandName.init) { const { projectName, pluginId, pluginSecret, siteDomain, templateId } = payload; try { const remotePluginInfo = await (0, get_plugin_info_1.getPluginInfo)(pluginId, pluginSecret, siteDomain); if (remotePluginInfo.frameworkVersion === types_1.EPluginFrameworkVersion.v2) { logger_1.logger.info('Current plugin will use v2 framework.'); await (0, init_1.initProject)({ projectName, pluginId, pluginSecret, siteDomain, templateId, }); return; } } catch (e) { // 私有化环境未部署插件框架版本查询接口会异常,我们兜成是 v1 插件 logger_1.logger.debug(e); logger_1.logger.warn("Can't get the plugin' framework version, will be treated as version 1.0."); } logger_1.logger.info('Current plugin will use v1 framework.'); await project_1.default.init({ name: projectName, pluginId, pluginSecret, options, }); return; } // 以下为插件工程下的操作命令 const [isPlugin, pluginFrameworkVersion] = (0, is_plugin_project_1.isPluginProject)(); if (!isPlugin) { logger_1.logger.error('Current working directory is not a plugin project, please check and retry.'); process.exit(1); } try { if (pluginFrameworkVersion === types_1.EPluginFrameworkVersion.v2) { logger_1.logger.info('Current project is v2 framework.'); switch (command) { case types_1.ECommandName.start: { await (0, start_1.startProject)(); return; } case types_1.ECommandName.build: { await (0, build_1.buildProject)(payload); return; } case types_1.ECommandName.release: { await (0, release_1.releaseProject)(); return; } case types_1.ECommandName.config: { if (payload.operate.toLowerCase() === 'set') { await (0, config_1.setConfig)(payload.key, payload.value); return; } if (payload.operate.toLowerCase() === 'get') { await (0, config_1.getConfig)(payload.key); return; } logger_1.logger.error('Only the get set operator is supported.'); return; } case types_1.ECommandName.update: { (0, update_1.updateProject)(); return; } } } } catch (e) { logger_1.logger.debug(e); // default v1 project logger_1.logger.warn("Can't execute the command as version 2.0, will be treated as version 1.0."); } logger_1.logger.info('Current project is v1 framework.'); const mainArgs = payload.mainArgs; switch (command) { case types_1.ECommandName.start: { project_1.default.run(types_2.ScriptCommand.start, process.argv); return; } case types_1.ECommandName.build: { const argv = payload.zip ? ['--zip'] : []; project_1.default.run(types_2.ScriptCommand.build, argv); return; } case types_1.ECommandName.release: { // 将主进程命令参数透传给子进程消费,比如 lpm release 指定 pluginSecret project_1.default.run(types_2.ScriptCommand.release, mainArgs); return; } case types_1.ECommandName.config: { const ins = model_1.ConfigFactory.getConfig(types_2.EConfigType.Plugin); await ins.run(payload.operate, payload.key, payload.value); return; } case types_1.ECommandName.update: { logger_1.logger.info('The command is only support in v2 framework.'); return; } } logger_1.logger.error(`The command ${command} is not supported.`); process.exit(1); })();