mirror of
https://github.com/jlengrand/Maestro.git
synced 2026-03-10 15:51:18 +00:00
- Version stamping now includes package.json version plus short git hash 🧩 - Local build label switched to clearer “(local)” suffix for sanity 🏷️ - Script now reads package.json robustly with safe “unknown” fallback 🛡️ - Added proper ESM path resolution using fileURLToPath/dirname utilities 🧭
73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Cross-platform script to set VITE_APP_VERSION environment variable
|
|
* with the local git hash. Works on Windows, macOS, and Linux.
|
|
*
|
|
* Usage: node scripts/set-version.mjs <command> [args...]
|
|
* Example: node scripts/set-version.mjs npm run build
|
|
*/
|
|
|
|
import { execFileSync, spawn } from 'child_process';
|
|
import { readFileSync } from 'fs';
|
|
import { fileURLToPath } from 'url';
|
|
import { dirname, join } from 'path';
|
|
import process from 'process';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
function getGitHash() {
|
|
try {
|
|
const hash = execFileSync('git', ['rev-parse', '--short=8', 'HEAD'], {
|
|
encoding: 'utf8',
|
|
stdio: ['pipe', 'pipe', 'pipe']
|
|
}).trim();
|
|
return hash;
|
|
} catch {
|
|
return 'unknown';
|
|
}
|
|
}
|
|
|
|
function getPackageVersion() {
|
|
try {
|
|
const packageJson = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
return packageJson.version;
|
|
} catch {
|
|
return 'unknown';
|
|
}
|
|
}
|
|
|
|
const gitHash = getGitHash();
|
|
const packageVersion = getPackageVersion();
|
|
const version = `${packageVersion} ${gitHash} (local)`;
|
|
|
|
// Set environment variable
|
|
process.env.VITE_APP_VERSION = version;
|
|
|
|
// Get the command and args to run
|
|
const [,, ...args] = process.argv;
|
|
|
|
if (args.length === 0) {
|
|
console.log(`VITE_APP_VERSION=${version}`);
|
|
process.exit(0);
|
|
}
|
|
|
|
// Run the command with the environment variable set
|
|
const command = args[0];
|
|
const commandArgs = args.slice(1);
|
|
|
|
const child = spawn(command, commandArgs, {
|
|
stdio: 'inherit',
|
|
shell: true,
|
|
env: { ...process.env, VITE_APP_VERSION: version }
|
|
});
|
|
|
|
child.on('close', (code) => {
|
|
process.exit(code ?? 0);
|
|
});
|
|
|
|
child.on('error', (err) => {
|
|
console.error(`Failed to run command: ${err.message}`);
|
|
process.exit(1);
|
|
});
|