diff options
Diffstat (limited to 'bundle/scripts')
| -rw-r--r-- | bundle/scripts/package.js | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/bundle/scripts/package.js b/bundle/scripts/package.js index 56aae85..5100f9f 100644 --- a/bundle/scripts/package.js +++ b/bundle/scripts/package.js @@ -1,11 +1,20 @@ import { execFileSync } from 'node:child_process'; -import { copyFileSync, mkdirSync, readdirSync, rmSync } from 'node:fs'; +import { copyFileSync, mkdirSync, readdirSync, readFileSync, rmSync } from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; const root = fileURLToPath(new URL('..', import.meta.url)); try { + const repository = path.resolve(root, '..'); + const compilerPaths = readFileSync(path.join(repository, 'cmake/CompilerPaths.txt'), 'utf8').split('\n').map(line => line.trim()).filter(Boolean); + const revision = execFileSync('git', ['-C', repository, 'log', '-1', '--format=%ct:%h', '--', ...compilerPaths, 'bundle', 'plugin'], { encoding: 'utf8' }).trim(); + const match = /^(\d+):([0-9a-f]+)$/.exec(revision); + if (!match) throw new Error('Cannot read the last Bundle commit for the package name.'); + const timestamp = new Date(Number(match[1]) * 1000).toISOString(); + const date = timestamp.slice(0, 10).replace(/-/g, ''); + const time = timestamp.slice(11, 19).replace(/:/g, ''); + console.log(`Bundle version: ${date}-${time}-${match[2]}`); const platform = { win32: { architecture: 'x64', name: 'Windows-x86_64', extension: '.exe' }, darwin: { architecture: 'arm64', name: 'Darwin-arm64', extension: '.tar.xz' } @@ -13,14 +22,11 @@ try { if (!platform || process.arch !== platform.architecture) { throw new Error('Release packages are built on Windows x64 and macOS arm64 only. Use tauri build --no-bundle for Linux.'); } - const revision = execFileSync('git', ['log', '-1', '--format=%ct:%h'], { cwd: root, encoding: 'utf8' }).trim(); - const match = /^(\d+):([0-9a-f]+)$/.exec(revision); - if (!match) throw new Error('Cannot read HEAD for the package name.'); - const timestamp = new Date(Number(match[1]) * 1000).toISOString(); - const date = timestamp.slice(0, 10).replace(/-/g, ''); - const time = timestamp.slice(11, 19).replace(/:/g, ''); execFileSync(process.execPath, [path.join(root, 'node_modules/@tauri-apps/cli/tauri.js'), 'build', - ...(process.platform === 'win32' ? ['--no-bundle'] : ['--bundles', 'app'])], { cwd: root, stdio: 'inherit' }); + ...(process.platform === 'win32' ? ['--no-bundle'] : ['--bundles', 'app'])], { + cwd: root, stdio: 'inherit', + env: { ...process.env, CPSC_BUNDLE_TIME: `${date}-${time}`, CPSC_BUNDLE_COMMIT: match[2] } + }); const artifacts = path.join(root, 'artifacts'); rmSync(artifacts, { recursive: true, force: true }); mkdirSync(artifacts, { recursive: true }); |
