mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
* automate Bun.version & revision polyfills * polyfill Bun.gc * bun:jsc module initial polyfills * fixes & improvements to bun-wasm
42 lines
1.8 KiB
TypeScript
42 lines
1.8 KiB
TypeScript
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);
|