Files
proxycast/scripts/quality-task-selector.mjs
T
2026-05-10 03:43:43 +08:00

101 lines
2.4 KiB
JavaScript

#!/usr/bin/env node
import process from "node:process";
import { planQualityTasks } from "./quality-task-planner.mjs";
function parseArgs(argv) {
const result = {
base: "",
format: "json",
full: false,
help: false,
staged: false,
};
for (let index = 0; index < argv.length; index += 1) {
const arg = argv[index];
if (arg === "--full") {
result.full = true;
continue;
}
if (arg === "--staged") {
result.staged = true;
continue;
}
if (arg === "--base" && argv[index + 1]) {
result.base = String(argv[index + 1]).trim();
index += 1;
continue;
}
if (arg === "--format" && argv[index + 1]) {
result.format = String(argv[index + 1]).trim();
index += 1;
continue;
}
if (arg === "--help" || arg === "-h") {
result.help = true;
}
}
return result;
}
function printHelp() {
console.log(`
Lime 质量任务规划器
用法:
node scripts/quality-task-selector.mjs
node scripts/quality-task-selector.mjs --staged
node scripts/quality-task-selector.mjs --base origin/main
node scripts/quality-task-selector.mjs --format github
选项:
--full 忽略改动检测,返回全量任务
--staged 仅基于已暂存文件判断
--base REF 基于指定基线判断
--format FMT 输出格式:json | github
-h, --help 显示帮助
`);
}
function printGithubFormat(result) {
const { changedFiles, tasks } = result;
const lines = [
`changed_count=${changedFiles.length}`,
`integrity=${tasks.integrity}`,
`frontend=${tasks.frontend}`,
`rust=${tasks.rust}`,
`bridge=${tasks.bridge}`,
`bridge_reasons=${Array.isArray(tasks.bridgeReasons) ? tasks.bridgeReasons.join(",") : ""}`,
`gui_smoke=${tasks.guiSmoke}`,
`docs=${tasks.docs}`,
`docs_only=${tasks.docsOnly}`,
`fallback=${tasks.fallback}`,
`recommended_commands=${Array.isArray(tasks.recommendedCommands) ? tasks.recommendedCommands.join(" | ") : ""}`,
`workflow=${tasks.workflow}`,
];
process.stdout.write(`${lines.join("\n")}\n`);
}
function main() {
const options = parseArgs(process.argv.slice(2));
if (options.help) {
printHelp();
return;
}
const result = planQualityTasks(options);
if (options.format === "github") {
printGithubFormat(result);
return;
}
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
}
main();