aboutsummaryrefslogtreecommitdiff
path: root/packages/bun-polyfills/tools/updateversions.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/bun-polyfills/tools/updateversions.ts')
-rw-r--r--packages/bun-polyfills/tools/updateversions.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/bun-polyfills/tools/updateversions.ts b/packages/bun-polyfills/tools/updateversions.ts
new file mode 100644
index 000000000..bf838ac55
--- /dev/null
+++ b/packages/bun-polyfills/tools/updateversions.ts
@@ -0,0 +1,41 @@
+import path from 'path';
+
+const abort = (...msg: string[]): never => (console.error(...msg), process.exit(1));
+
+const makefilePath = path.resolve(import.meta.dir, '../../../Makefile');
+const makefile = Bun.file(makefilePath);
+if (!await makefile.exists()) abort('Makefile not found at', makefilePath);
+
+const makefileContent = await makefile.text();
+const matched = makefileContent.match(/^BUN_BASE_VERSION\s*=\s*(\d+.\d+)/m);
+if (!matched) abort('Could not find BUN_BASE_VERSION in Makefile');
+
+const buildidPath = path.resolve(import.meta.dir, '../../../src/build-id');
+const buildid = Bun.file(buildidPath);
+if (!await buildid.exists()) abort('Build ID file not found at', buildidPath);
+
+const [, BUN_BASE_VERSION] = matched!;
+const BUN_VERSION = `${BUN_BASE_VERSION}.${await buildid.text()}`.trim();
+
+const bunTsPath = path.resolve(import.meta.dir, '../src/modules/bun.ts');
+const bunTs = Bun.file(bunTsPath);
+if (!await bunTs.exists()) abort('bun.ts source file not found at', bunTsPath);
+
+const bunTsContent = await bunTs.text();
+const bunTsContentNew = bunTsContent.replace(
+ /^export const version = '.+' satisfies typeof Bun.version;$/m,
+ `export const version = '${BUN_VERSION}' satisfies typeof Bun.version;`
+);
+if (bunTsContentNew !== bunTsContent) console.info('Updated Bun.version polyfill to', BUN_VERSION);
+
+const git = Bun.spawnSync({ cmd: ['git', 'rev-parse', 'HEAD'] });
+if (!git.success) abort('Could not get git HEAD commit hash');
+const BUN_REVISION = git.stdout.toString('utf8').trim();
+
+const bunTsContentNewer = bunTsContentNew.replace(
+ /^export const revision = '.+' satisfies typeof Bun.revision;$/m,
+ `export const revision = '${BUN_REVISION}' satisfies typeof Bun.revision;`
+);
+if (bunTsContentNewer !== bunTsContentNew) console.info('Updated Bun.revision polyfill to', BUN_REVISION);
+
+Bun.write(bunTs, bunTsContentNewer);