// scripts/generate-version.js - Generate version info from git const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); const pkg = require('../package.json'); try { const gitHash = execSync('git rev-parse --short HEAD').toString().trim(); const gitBranch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim(); const gitDate = execSync('git log -1 --format=%cd --date=format:%Y-%m-%d').toString().trim(); const isDirty = execSync('git status --porcelain').toString().trim() !== ''; const version = { version: `${pkg.version}+${gitHash}${isDirty ? '-dirty' : ''}`, semver: pkg.version, commit: gitHash, branch: gitBranch, buildDate: new Date().toISOString(), gitDate: gitDate, }; fs.writeFileSync( path.join(__dirname, '../src/version.json'), JSON.stringify(version, null, 2) ); // Also generate version.ts for better Vite/TypeScript compatibility const versionTs = `// Auto-generated by scripts/generate-version.js export const VERSION_INFO = ${JSON.stringify(version, null, 2)} as const; `; fs.writeFileSync( path.join(__dirname, '../src/version.ts'), versionTs ); console.log(`✓ Generated version: ${version.version}`); console.log(` Semver: ${version.semver}, Commit: ${version.commit}, Branch: ${version.branch}`); } catch (error) { console.warn('⚠ Could not generate git version, using package.json fallback'); const version = { version: pkg.version, semver: pkg.version, commit: 'unknown', branch: 'unknown', buildDate: new Date().toISOString(), gitDate: 'unknown', }; fs.writeFileSync( path.join(__dirname, '../src/version.json'), JSON.stringify(version, null, 2) ); const versionTs = `// Auto-generated by scripts/generate-version.js export const VERSION_INFO = ${JSON.stringify(version, null, 2)} as const; `; fs.writeFileSync( path.join(__dirname, '../src/version.ts'), versionTs ); console.log(`✓ Fallback version: ${version.version}`); }