|
@@ -5,23 +5,40 @@ const path = require("path");
|
|
|
const versionFile = path.join("build", "version.json");
|
|
|
const indexFile = path.join("build", "index.html");
|
|
|
|
|
|
-const zero = (digit) => `0${digit}`.slice(-2);
|
|
|
-
|
|
|
-const versionDate = (date) => {
|
|
|
- const date_ = `${date.getFullYear()}-${zero(date.getMonth() + 1)}-${zero(
|
|
|
- date.getDate(),
|
|
|
- )}`;
|
|
|
- const time = `${zero(date.getHours())}-${zero(date.getMinutes())}-${zero(
|
|
|
- date.getSeconds(),
|
|
|
- )}`;
|
|
|
- return `${date_}-${time}`;
|
|
|
+const versionDate = (date) => date.toISOString().replace(".000", "");
|
|
|
+
|
|
|
+const commitHash = () => {
|
|
|
+ try {
|
|
|
+ return require("child_process")
|
|
|
+ .execSync("git rev-parse --short HEAD")
|
|
|
+ .toString()
|
|
|
+ .trim();
|
|
|
+ } catch {
|
|
|
+ return "none";
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
-const now = new Date();
|
|
|
+const commitDate = (hash) => {
|
|
|
+ try {
|
|
|
+ const unix = require("child_process")
|
|
|
+ .execSync(`git show -s --format=%ct ${hash}`)
|
|
|
+ .toString()
|
|
|
+ .trim();
|
|
|
+ const date = new Date(parseInt(unix) * 1000);
|
|
|
+ return versionDate(date);
|
|
|
+ } catch {
|
|
|
+ return versionDate(new Date());
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const getFullVersion = () => {
|
|
|
+ const hash = commitHash();
|
|
|
+ return `${commitDate(hash)}-${hash}`;
|
|
|
+};
|
|
|
|
|
|
const data = JSON.stringify(
|
|
|
{
|
|
|
- version: versionDate(now),
|
|
|
+ version: getFullVersion(),
|
|
|
},
|
|
|
undefined,
|
|
|
2,
|
|
@@ -34,7 +51,7 @@ fs.readFile(indexFile, "utf8", (error, data) => {
|
|
|
if (error) {
|
|
|
return console.error(error);
|
|
|
}
|
|
|
- const result = data.replace(/{version}/g, versionDate(now));
|
|
|
+ const result = data.replace(/{version}/g, getFullVersion());
|
|
|
|
|
|
fs.writeFile(indexFile, result, "utf8", (error) => {
|
|
|
if (error) {
|