Files
tutti/tools/scripts/package-release-version.mjs
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

67 lines
1.5 KiB
JavaScript

const stablePackageReleaseTagPrefix = "packages-v";
const stablePackageReleaseVersionPattern = /^0\.0\.(?<patch>\d+)$/;
export function computeNextStablePackageReleaseVersion(tagNames) {
const stableVersions = [];
const invalidTags = [];
for (const tagName of tagNames) {
if (!tagName.startsWith(stablePackageReleaseTagPrefix)) {
continue;
}
const version = parseStablePackageReleaseTag(tagName);
if (!version) {
invalidTags.push(tagName);
continue;
}
stableVersions.push(version);
}
if (invalidTags.length > 0) {
throw new Error(
`Unsupported package release tags: ${invalidTags.join(", ")}`
);
}
if (stableVersions.length === 0) {
return "0.0.1";
}
const nextPatch =
Math.max(...stableVersions.map((version) => version.patch)) + 1;
return `0.0.${nextPatch}`;
}
export function formatStablePackageReleaseTag(version) {
if (!parseStablePackageReleaseVersion(version)) {
throw new Error(`Unsupported package release version: ${version}`);
}
return `${stablePackageReleaseTagPrefix}${version}`;
}
export function parseStablePackageReleaseTag(tagName) {
if (!tagName.startsWith(stablePackageReleaseTagPrefix)) {
return null;
}
return parseStablePackageReleaseVersion(
tagName.slice(stablePackageReleaseTagPrefix.length)
);
}
export function parseStablePackageReleaseVersion(version) {
const match = stablePackageReleaseVersionPattern.exec(version);
if (!match?.groups) {
return null;
}
return {
patch: Number(match.groups.patch),
version
};
}