更新 cli 命令
Some checks are pending
TDevOPsCICD / build-image (push) Waiting to run

This commit is contained in:
cheney 2026-06-17 10:31:26 +08:00
parent a7f596aa0a
commit 4207d6e467

View File

@ -2,6 +2,15 @@
const os = require("os");
const kitfunction = require("./kitfunction");
async function getAvailableRemote() {
const remote = await $context.get("remote");
if (!(await remote.check())) {
$logger.error("远程仓库不可用");
return null;
}
return remote;
}
module.exports = {
init : function () {
return this;
@ -57,8 +66,6 @@ async function main(){
const vm = require('vm');
const script = new vm.Script(projectScript + ";" + step + "()");
// 注入全局变量
const kitfunction = require("./kitfunction")
const context = kitfunction;
script.runInNewContext(context, {
@ -83,53 +90,81 @@ async function main(){
});
parser.addCmdLine("remote", "验证远程仓库可达;", async function () {
let remote = await $context.get("remote")
if (!(await remote.check())) {
$logger.error("远程仓库不可用")
return
} else {
$logger.info("远程仓库可用")
const remote = await getAvailableRemote();
if (remote) {
$logger.info("远程仓库可用");
}
});
parser.addCmdLine("publish [localFile] [remotePath]", "发布到远程仓库", async function (cli) {
parser.addCmdLine("check", "验证远程仓库可达;", async function () {
const remote = await getAvailableRemote();
if (remote) {
$logger.info("远程仓库可用");
}
});
parser.addCmdLine("publish [localFile] [remotePath]", "发布到远程仓库; localFile 为空时使用当前目录 meta.json", async function (cli) {
const fs = require("fs");
let localFile = cli.getParamValue("localFile");
if (!fs.existsSync(localFile)) {
$logger.error("本地文件不存在")
return
let remotePath = cli.getParamValue("remotePath");
if (localFile && !fs.existsSync(localFile)) {
$logger.error("本地文件不存在");
return;
}
let remotePath = cli.getParamValue("remotePath");
if (!remotePath) {
$logger.info("使用本地配置路径")
if (!fs.existsSync("meta.json")) {
$logger.error("没有找到本地配置")
return
if (!localFile && !fs.existsSync("meta.json")) {
$logger.error("没有找到本地配置 meta.json");
return;
}
const remote = await getAvailableRemote();
if (!remote) {
return;
}
if (remotePath) {
$logger.info("发布到远程路径 " + remotePath);
} else {
$logger.info("发布到远程路径 " + remotePath)
$logger.info("使用 meta.json 中的 group/id/version 规则发布");
}
let remote = await $context.get("remote")
if (!(await remote.check())) {
$logger.error("远程仓库不可用")
return
} else {
$logger.info("远程仓库可用")
}
await remote.publish(localFile, remotePath)
$logger.info("发布成功")
await remote.publish(localFile, remotePath);
$logger.info("发布成功");
});
parser.addCmdLine("install [module]", "安装/更新模块;", async function (cli) {
let remote = await $context.get("remote")
if (!(await remote.check())) {
$logger.error("远程仓库不可用")
return
} else {
$logger.info("远程仓库可用")
parser.addCmdLine("install [module]", "安装/更新模块; 支持 myapp、myapp@1.0、/docker/net/myapp", async function (cli) {
const remote = await getAvailableRemote();
if (!remote) {
return;
}
remote.install(cli.getParamValue("module"))
await remote.install(cli.getParamValue("module"));
});
parser.addCmdLine("list [module]", "列出本地已安装版本;", async function (cli) {
let module = cli.getParamValue("module");
if (!module) {
module = "kit";
}
const remote = await $context.get("remote");
await remote.list(module);
});
parser.addCmdLine("use <module-version>", "切换到已安装版本,例如 myapp@1.0;", async function (cli) {
const remote = await $context.get("remote");
const version = await remote.use(cli.getParamValue("module-version"));
$logger.info("当前版本 " + version);
});
parser.addCmdLine("rollback <module>", "回滚到上一个已安装版本;", async function (cli) {
const remote = await $context.get("remote");
const version = await remote.rollback(cli.getParamValue("module"));
$logger.info("当前版本 " + version);
});
parser.addCmdLine("remove <module-version>", "删除本地已安装版本,例如 myapp@1.0;", async function (cli) {
const remote = await $context.get("remote");
await remote.remove(cli.getParamValue("module-version"));
$logger.info("删除成功");
});
}
}