diff options
author | 2023-02-01 14:53:57 -0800 | |
---|---|---|
committer | 2023-02-01 14:53:57 -0800 | |
commit | 69ee87d8e2a43ab948fe1c434b2b8aea3db219d4 (patch) | |
tree | 985a70a6431b2f0e49cbb5abf8d05c11f936ed47 /packages/bun-release/src/github.ts | |
parent | 6d0fff4faba5de146a071e07e332cf41fb47882e (diff) | |
download | bun-69ee87d8e2a43ab948fe1c434b2b8aea3db219d4.tar.gz bun-69ee87d8e2a43ab948fe1c434b2b8aea3db219d4.tar.zst bun-69ee87d8e2a43ab948fe1c434b2b8aea3db219d4.zip |
Add script to calculate semver for release
Diffstat (limited to 'packages/bun-release/src/github.ts')
-rw-r--r-- | packages/bun-release/src/github.ts | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/packages/bun-release/src/github.ts b/packages/bun-release/src/github.ts index fd743d17e..c0aa0239a 100644 --- a/packages/bun-release/src/github.ts +++ b/packages/bun-release/src/github.ts @@ -85,14 +85,28 @@ export async function getSha(tag: string, format?: "short" | "long") { return format === "short" ? sha.substring(0, 7) : sha; } +export async function getBuild(): Promise<number> { + const date = new Date().toISOString().split("T")[0].replace(/-/g, ""); + const response = await fetch("https://registry.npmjs.org/-/package/bun/dist-tags"); + const { canary }: { canary: string } = await response.json(); + if (!canary.includes(date)) { + return 1; + } + const match = /canary.[0-9]{8}\.([0-9]+)+?/.exec(canary); + return match ? 1 + parseInt(match[1]) : 1; +} + export async function getSemver(tag?: string, build?: number): Promise<string> { const { tag_name } = await getRelease(tag); if (tag_name !== "canary") { return tag_name.replace("bun-v", ""); } + if (build === undefined) { + build = await getBuild(); + } const sha = await getSha(tag_name, "short"); const date = new Date().toISOString().split("T")[0].replace(/-/g, ""); - return `${Bun.version}-canary.${date}.${build ?? 1}+${sha}`; + return `${Bun.version}-canary.${date}.${build}+${sha}`; } export function formatTag(tag: string): string { |