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
67 lines
1.5 KiB
JavaScript
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
|
|
};
|
|
}
|