aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ashcon Partovi <ashcon@partovi.net> 2023-01-24 11:17:08 -0800
committerGravatar Ashcon Partovi <ashcon@partovi.net> 2023-01-24 11:17:08 -0800
commit2edbf4d0ec7340d40f5e51b3b7d262499b5bc131 (patch)
treee49fa86a6d54d92b31b546b780f62809ef214522
parent645b7271f9a170906b7ffff2fce49c823b2b9193 (diff)
downloadbun-2edbf4d0ec7340d40f5e51b3b7d262499b5bc131.tar.gz
bun-2edbf4d0ec7340d40f5e51b3b7d262499b5bc131.tar.zst
bun-2edbf4d0ec7340d40f5e51b3b7d262499b5bc131.zip
Iterate on canary version again
-rw-r--r--packages/bun-npm/scripts/npm-build.ts30
1 files changed, 23 insertions, 7 deletions
diff --git a/packages/bun-npm/scripts/npm-build.ts b/packages/bun-npm/scripts/npm-build.ts
index 3218e28cc..d01032e2a 100644
--- a/packages/bun-npm/scripts/npm-build.ts
+++ b/packages/bun-npm/scripts/npm-build.ts
@@ -30,13 +30,7 @@ if (action === "publish") {
async function build(version: string): Promise<void> {
const release = await getRelease(version);
if (release.tag_name === "canary") {
- const { tag_name } = await getRelease();
- const sha = await getSha(tag_name);
- // Bun.version is the nightly release version,
- // but that means this script must be run using canary.
- // Also, npm does not accept "+build" in releases,
- // so the format is "{nightly}-canary.{sha}".
- npmVersion = `${Bun.version}-canary.${sha}`;
+ npmVersion = await getCanaryVersion();
} else {
npmVersion = release.tag_name.replace("bun-v", "");
}
@@ -187,6 +181,28 @@ async function fetchGithub(path: string) {
return fetch(url.toString());
}
+async function getCanaryVersion(): Promise<string> {
+ const date = new Date().toISOString().split("T")[0].replace(/-/g, "");
+ const semver = `${Bun.version}-canary.${date}`;
+ try {
+ const sha = await getSha("canary");
+ const response = await fetch(
+ `https://registry.npmjs.org/-/package/${npmPackage}/dist-tags`,
+ );
+ const { canary }: { canary: string } = await response.json();
+ if (canary.startsWith(semver)) {
+ const match = /canary.[0-9]{8}\.([0-9]+)+?/.exec(canary);
+ if (match && isFinite(parseInt(match[1]))) {
+ return `${semver}.${match[1]}+${sha}`;
+ }
+ }
+ return `${semver}.1+${sha}`;
+ } catch (error) {
+ console.warn("Failed to calculate canary version", error);
+ }
+ return `${semver}.1`;
+}
+
function formatTag(version: string): string {
if (version.includes("canary") || version.startsWith("bun-v")) {
return version;