#!/usr/bin/env node const tag = process.argv[2]; if (!tag) { console.error("用法:release-tag-exists.mjs "); 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);