Files
dingMCP/scripts/release-tag-exists.mjs
gitea-admin 55e43e3451
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s
fix: make release deployment safely repeatable
2026-08-18 17:28:03 +00:00

37 lines
917 B
JavaScript

#!/usr/bin/env node
const tag = process.argv[2];
if (!tag) {
console.error("用法:release-tag-exists.mjs <tag>");
process.exit(2);
}
let body = "";
for await (const chunk of process.stdin) body += chunk;
let value;
try {
value = JSON.parse(body);
} catch {
console.error("无法解析 Gitea Release 列表 JSON");
process.exit(2);
}
const rows = Array.isArray(value)
? value
: Array.isArray(value?.data)
? value.data
: Array.isArray(value?.releases)
? value.releases
: undefined;
if (!rows) {
console.error("Gitea Release 列表 JSON 结构不受支持");
process.exit(2);
}
const found = rows.some((row) => row && typeof row === "object" && Object.entries(row).some(([key, entry]) => {
const normalizedKey = key.toLowerCase().replace(/[^a-z]/g, "");
return (normalizedKey === "tag" || normalizedKey === "tagname") && entry === tag;
}));
process.exit(found ? 0 : 1);