Add script that updates LOOT's version number

Closes #666.
This commit is contained in:
Oliver Hamlet
2016-10-22 11:41:15 +01:00
parent fa2c1d8b2f
commit 859389b608
2 changed files with 90 additions and 0 deletions
+1
View File
@@ -14,6 +14,7 @@
"private": true,
"dependencies": {
"fs-extra": "^0.30.0",
"replace": "^0.3.0",
"vulcanize": "^1.14.5"
},
"devDependencies": {
+89
View File
@@ -0,0 +1,89 @@
#! /usr/bin/env node
'use strict';
const path = require('path');
const replace = require('replace');
function updatePreCommitHookScript(version) {
replace({
regex: /--package-version=[\d.]+/,
replacement: `--package-version=${version}`,
paths: [path.join('scripts', 'git', 'pre-commit')],
silent: true,
});
}
function updateInstallerScript(version) {
replace({
regex: /#define MyAppVersion "[\d.]+"/,
replacement: `#define MyAppVersion "${version}"`,
paths: [path.join('scripts', 'installer.iss')],
silent: true,
});
}
function updateCppFile(version) {
const file = path.join('src', 'backend', 'app', 'loot_version.cpp.in');
const versionParts = version.split('.');
replace({
regex: /LootVersion::major = \d+;/,
replacement: `LootVersion::major = ${versionParts[0]};`,
paths: [file],
silent: true,
});
replace({
regex: /LootVersion::minor = \d+;/,
replacement: `LootVersion::minor = ${versionParts[1]};`,
paths: [file],
silent: true,
});
replace({
regex: /LootVersion::patch = \d+;/,
replacement: `LootVersion::patch = ${versionParts[2]};`,
paths: [file],
silent: true,
});
}
function updateResourceFile(version) {
const file = path.join('src', 'resource.rc');
const commaSeparatedVersion = version.replace(/\./g, ', ');
replace({
regex: /VERSION \d+, \d+, \d+/g,
replacement: `VERSION ${commaSeparatedVersion}`,
paths: [file],
silent: true,
});
replace({
regex: /Version", "\d+\.\d+\.\d+"/g,
replacement: `Version", "${version}"`,
paths: [file],
silent: true,
});
}
function main() {
if (process.argv.length !== 3) {
console.error('Invalid number of arguments given. Only one argument (the new version number) is expected.');
process.exit(1);
}
const newVersion = process.argv[2];
if (newVersion.split('.').length !== 3) {
console.error('The version number must be a three-part semantic version.');
process.exit(1);
}
updatePreCommitHookScript(newVersion);
updateInstallerScript(newVersion);
updateCppFile(newVersion);
updateResourceFile(newVersion);
}
main();