aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ashcon Partovi <ashcon@partovi.net> 2023-02-01 14:53:57 -0800
committerGravatar Ashcon Partovi <ashcon@partovi.net> 2023-02-01 14:53:57 -0800
commit69ee87d8e2a43ab948fe1c434b2b8aea3db219d4 (patch)
tree985a70a6431b2f0e49cbb5abf8d05c11f936ed47
parent6d0fff4faba5de146a071e07e332cf41fb47882e (diff)
downloadbun-69ee87d8e2a43ab948fe1c434b2b8aea3db219d4.tar.gz
bun-69ee87d8e2a43ab948fe1c434b2b8aea3db219d4.tar.zst
bun-69ee87d8e2a43ab948fe1c434b2b8aea3db219d4.zip
Add script to calculate semver for release
-rw-r--r--packages/bun-release/package.json1
-rw-r--r--packages/bun-release/scripts/get-version.ts5
-rw-r--r--packages/bun-release/scripts/upload-npm.ts22
-rw-r--r--packages/bun-release/src/github.ts16
4 files changed, 22 insertions, 22 deletions
diff --git a/packages/bun-release/package.json b/packages/bun-release/package.json
index d48e6f84d..759c35ede 100644
--- a/packages/bun-release/package.json
+++ b/packages/bun-release/package.json
@@ -12,6 +12,7 @@
},
"scripts": {
"format": "prettier --write src scripts",
+ "get-version": "bun scripts/get-version.ts",
"upload-npm": "bun scripts/upload-npm.ts",
"upload-assets": "bun scripts/upload-assets.ts"
}
diff --git a/packages/bun-release/scripts/get-version.ts b/packages/bun-release/scripts/get-version.ts
new file mode 100644
index 000000000..440749c3b
--- /dev/null
+++ b/packages/bun-release/scripts/get-version.ts
@@ -0,0 +1,5 @@
+import { log } from "../src/console";
+import { getSemver } from "../src/github";
+
+log(await getSemver(process.argv[2]));
+process.exit(0); // HACK
diff --git a/packages/bun-release/scripts/upload-npm.ts b/packages/bun-release/scripts/upload-npm.ts
index c81ef4763..3cd8cd9d5 100644
--- a/packages/bun-release/scripts/upload-npm.ts
+++ b/packages/bun-release/scripts/upload-npm.ts
@@ -29,11 +29,7 @@ process.exit(0); // HACK
async function build(tag?: string): Promise<void> {
const release = await getRelease(tag);
- if (release.tag_name === "canary") {
- version = await getCanarySemver();
- } else {
- version = release.tag_name.replace("bun-v", "");
- }
+ version = await getSemver(release.tag_name);
await buildRootModule();
for (const platform of platforms) {
await buildModule(release, platform);
@@ -147,22 +143,6 @@ async function extractFromZip(url: string, filename: string): Promise<JSZipObjec
throw new Error(`File not found: ${filename}`);
}
-async function getCanarySemver(): Promise<string> {
- const date = new Date().toISOString().split("T")[0].replace(/-/g, "");
- try {
- const response = await fetch(`https://registry.npmjs.org/-/package/${module}/dist-tags`);
- const { canary }: { canary: string } = await response.json();
- if (canary.includes(date)) {
- const match = /canary.[0-9]{8}\.([0-9]+)+?/.exec(canary);
- const build = 1 + (match ? parseInt(match[1]) : 0);
- return getSemver("canary", build);
- }
- } catch (error) {
- debug("getCanarySemver failed", error);
- }
- return getSemver("canary");
-}
-
function bundle(src: string, dst: string, options: BuildOptions = {}): void {
const { errors } = buildSync({
bundle: true,
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 {