50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const rootDir = path.resolve(__dirname, '..');
|
|
const serverPackageJsonPath = path.join(rootDir, 'server', 'package.json');
|
|
const outputFilePath = path.join(rootDir, 'server', 'src', 'generated', 'build-version.ts');
|
|
|
|
function readServerVersion() {
|
|
const packageJson = JSON.parse(fs.readFileSync(serverPackageJsonPath, 'utf8'));
|
|
|
|
if (typeof packageJson.version === 'string' && packageJson.version.trim().length > 0) {
|
|
return packageJson.version.trim();
|
|
}
|
|
|
|
return '0.0.0';
|
|
}
|
|
|
|
function syncServerBuildVersion(version = readServerVersion()) {
|
|
const nextContents = `export const SERVER_BUILD_VERSION = ${JSON.stringify(version)};\n`;
|
|
|
|
fs.mkdirSync(path.dirname(outputFilePath), { recursive: true });
|
|
|
|
if (!fs.existsSync(outputFilePath) || fs.readFileSync(outputFilePath, 'utf8') !== nextContents) {
|
|
fs.writeFileSync(outputFilePath, nextContents, 'utf8');
|
|
}
|
|
|
|
return version;
|
|
}
|
|
|
|
function main() {
|
|
const version = syncServerBuildVersion();
|
|
|
|
console.log(`[server-build-version] Synced ${outputFilePath} -> ${version}`);
|
|
}
|
|
|
|
if (require.main === module) {
|
|
try {
|
|
main();
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : String(error);
|
|
|
|
console.error(`[server-build-version] ${message}`);
|
|
process.exitCode = 1;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
syncServerBuildVersion
|
|
};
|