UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

91 lines (90 loc) 5.82 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addPublishCommand = void 0; // ⚠️ 改命令名 / flag / alias 时,同步 grep `lpm` skills/ .claude/skills/ 修文档引用 const path_1 = __importDefault(require("path")); const types_1 = require("../../types"); const logger_1 = require("../../utils/logger"); const run_script_1 = __importDefault(require("../../utils/run-script")); const validate_tools_1 = require("../../utils/validate-tools"); function addPublishCommand(program) { program .command('publish') .description('Publish a plugin version.') .option('--release-notes <release-notes>', '版本描述 / release notes(中文)。普通插件必填;AI 插件忽略(release_app 不消费)') .option('--artifact-version <artifact-version>', '构建产物版本(由 `lpm release` 输出)。普通插件必填;无前端产物的 AI 应用可省略(按 "0" 处理),开了节点卡片的 ai_node 仍需传') .option('--version <version>', '版本号(示例:1.0.0);普通插件不传则 patch +1。AI 插件忽略') .option('--store <store>', '发布当前版本至插件商店:yes / no(不传则继承上一版本)。AI 插件强制 yes') .option('--upgrade <upgrade>', '更新已安装版本:manual(管理员手动)/ all(自动更新全部)/ limit(指定范围自动更新)[目前只支持 manual]。AI 插件忽略', 'manual') .option('--scene-type <scene-type>', 'AI 插件用:1=企业版 / 2=ISV 版(默认 1)。普通插件忽略', '1') // .option('--upgrade-limit-version <upgrade-limit-version>', 'upgrade=limit 时必填:范围版本号') // .option( // '--upgrade-limit-type <upgrade-limit-type>', // 'upgrade=limit 时可选:higher(高于该版本)/ lower(低于该版本)', // 'higher', // ) .action(options => { var _a, _b, _c, _d, _e, _f, _g, _h; const version = (_a = options.version) === null || _a === void 0 ? void 0 : _a.trim(); const releaseNotes = (_b = options.releaseNotes) === null || _b === void 0 ? void 0 : _b.trim(); const artifactVersion = (_c = options.artifactVersion) === null || _c === void 0 ? void 0 : _c.trim(); const store = (_d = options.store) === null || _d === void 0 ? void 0 : _d.trim(); const upgrade = ((_e = options.upgrade) === null || _e === void 0 ? void 0 : _e.trim()) || 'manual'; const upgradeLimitVersion = (_f = options.upgradeLimitVersion) === null || _f === void 0 ? void 0 : _f.trim(); const upgradeLimitType = (_g = options.upgradeLimitType) === null || _g === void 0 ? void 0 : _g.trim(); const sceneTypeRaw = ((_h = options.sceneType) === null || _h === void 0 ? void 0 : _h.trim()) || '1'; if (version && !(0, validate_tools_1.isValidPluginVersion)(version)) { logger_1.logger.error(`The version "${version}" is not valid (expected semver x.y.z, e.g. 1.2.3 — leading zeros not allowed except for the digit 0 itself).`); process.exit(1); } // --release-notes / --artifact-version 是否必填由 service 入口按 app_type + resources 决定 // (普通插件必填 artifactVersion;无前端产物的 AI 应用可省略)。command 层不再强校验,避免 // 普通使用者首次给 AI 应用发版时被这条卡住。 const sceneTypeNum = Number(sceneTypeRaw); if (sceneTypeNum !== 1 && sceneTypeNum !== 2) { logger_1.logger.error(`--scene-type must be 1 (Builtin) or 2 (ISV), got "${sceneTypeRaw}".`); process.exit(1); } if (store !== undefined && store !== 'yes' && store !== 'no') { logger_1.logger.error(`--store must be "yes" or "no" (omit to inherit from previous version), got "${store}"`); process.exit(1); } if (upgrade !== 'manual' && upgrade !== 'all' && upgrade !== 'limit') { logger_1.logger.error(`The upgrade "${upgrade}" is not valid (allowed values: "manual" | "all" | "limit"; defaults to "manual" when omitted).`); process.exit(1); } if (upgrade === 'limit') { if (!upgradeLimitVersion || !(0, validate_tools_1.isValidPluginVersion)(upgradeLimitVersion)) { logger_1.logger.error(`The upgradeLimitVersion "${upgradeLimitVersion}" is required when --upgrade=limit and must be a semver x.y.z (e.g. 1.2.3).`); process.exit(1); } if (upgradeLimitType !== 'higher' && upgradeLimitType !== 'lower') { logger_1.logger.error(`The upgradeLimitType "${upgradeLimitType}" is not valid (allowed values: "higher" | "lower"; required when --upgrade=limit).`); process.exit(1); } } if (upgrade !== 'limit' && (options.upgradeLimitVersion || options.upgradeLimitType)) { logger_1.logger.error('The upgradeLimitVersion/upgradeLimitType is only available when upgrade=limit.'); process.exit(1); } (0, run_script_1.default)(path_1.default.join(__dirname, '../dispatcher'), [ '--command', types_1.ECommandName.publish, '--payload', JSON.stringify({ version, releaseNotes, artifactVersion, store, upgrade, upgradeLimitVersion, upgradeLimitType, sceneType: sceneTypeNum, }), ]); }); } exports.addPublishCommand = addPublishCommand;