ruffle/web/packages/core/tools/set_version.js

65 lines
1.9 KiB
JavaScript

const replace = require("replace-in-file");
const childProcess = require("child_process");
const fs = require("fs");
let buildDate = new Date().toISOString();
let versionNumber =
process.env.npm_package_version + "+" + buildDate.substr(0, 10);
let versionChannel = process.env.CFG_RELEASE_CHANNEL || "nightly";
const firefoxExtensionId =
process.env.FIREFOX_EXTENSION_ID || "ruffle@ruffle.rs";
let commitHash = "unknown";
try {
commitHash = childProcess.execSync("git rev-parse HEAD").toString().trim();
} catch {
console.log("Couldn't fetch latest git commit...");
}
let versionName =
versionChannel === "nightly"
? `nightly ${buildDate.substr(0, 10)}`
: process.env.npm_package_version;
let versionSeal = {};
if (process.env.ENABLE_VERSION_SEAL === "true") {
if (fs.existsSync("version_seal.json")) {
// Using the version seal stored previously.
versionSeal = JSON.parse(fs.readFileSync("version_seal.json"));
versionNumber = versionSeal.version_number;
versionName = versionSeal.version_name;
versionChannel = versionSeal.version_channel;
buildDate = versionSeal.build_date;
commitHash = versionSeal.commitHash;
} else {
versionSeal = {
version_number: versionNumber,
version_name: versionName,
version_channel: versionChannel,
build_date: buildDate,
commitHash: commitHash,
build_id: process.env.BUILD_ID,
firefox_extension_id: firefoxExtensionId,
};
fs.writeFileSync("version_seal.json", JSON.stringify(versionSeal));
}
}
const options = {
files: "dist/**",
from: [
/%VERSION_NUMBER%/g,
/%VERSION_NAME%/g,
/%VERSION_CHANNEL%/g,
/%BUILD_DATE%/g,
/%COMMIT_HASH%/g,
],
to: [versionNumber, versionName, versionChannel, buildDate, commitHash],
};
replace.sync(options);