54 строки
1.7 KiB
JavaScript
54 строки
1.7 KiB
JavaScript
const fs = require('fs');
|
|
|
|
function dayNumber() {
|
|
var now = new Date();
|
|
var start = new Date(now.getFullYear(), 0, 0);
|
|
var diff = now - start;
|
|
var oneDay = 1000 * 60 * 60 * 24;
|
|
var dayOfYear = Math.floor(diff / oneDay);
|
|
return dayOfYear;
|
|
}
|
|
|
|
function readAll(filename) {
|
|
var contents = fs.readFileSync(filename, 'utf8');
|
|
return contents;
|
|
}
|
|
|
|
function fileExists(path) {
|
|
return fs.existsSync(path);
|
|
}
|
|
|
|
function generateVersionHpp() {
|
|
var palTxt = "CPP11";
|
|
// Read version tag
|
|
var ver1 = readAll("../Solutions/version.txt");
|
|
// Remove end-of-line
|
|
ver1 = ver1.replace("\n", "");
|
|
// Replace 999 by today's dayNumber for nightly builds
|
|
ver1 = ver1.replace("999", dayNumber());
|
|
// console.log("version.txt => " + ver1 + "\n");
|
|
var ver2 = ver1.split(".").join(",");
|
|
var arr = ver1.split(".");
|
|
var versionHpp = "../lib/include/public/Version.hpp";
|
|
if (fileExists(versionHpp)) {
|
|
var versionHppTxt = readAll(versionHpp);
|
|
if (versionHppTxt.search(ver1) != -1) {
|
|
console.log("Version.hpp " + ver1 + " kept (incremental build)\n");
|
|
return;
|
|
}
|
|
// Delete and recreate
|
|
fs.unlinkSync(versionHpp);
|
|
}
|
|
var templText = readAll("../lib/include/public/Version.hpp.template");
|
|
templText = templText.replace(/\@ull/gi, "@");
|
|
templText = templText.replace(/\@BUILD_VERSION_MAJOR\@/g, arr[0]);
|
|
templText = templText.replace(/\@BUILD_VERSION_MINOR\@/g, arr[1]);
|
|
templText = templText.replace(/\@BUILD_VERSION_PATCH\@/g, arr[2]);
|
|
templText = templText.replace(/\@BUILD_NUMBER\@/g, arr[3]);
|
|
templText = templText.replace(/\@PAL_IMPLEMENTATION_UPPER\@/g, palTxt);
|
|
fs.writeFileSync(versionHpp, templText);
|
|
console.log("Version.hpp " + ver1 + " generated (clean build)\n");
|
|
}
|
|
|
|
generateVersionHpp();
|