12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/usr/bin/env node
- const fs = require("fs");
- const path = require("path");
- const versionFile = path.join("build", "version.json");
- const indexFile = path.join("build", "index.html");
- 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 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: getFullVersion(),
- },
- undefined,
- 2,
- );
- fs.writeFileSync(versionFile, data);
- // https://stackoverflow.com/a/14181136/8418
- fs.readFile(indexFile, "utf8", (error, data) => {
- if (error) {
- return console.error(error);
- }
- const result = data.replace(/{version}/g, getFullVersion());
- fs.writeFile(indexFile, result, "utf8", (error) => {
- if (error) {
- return console.error(error);
- }
- });
- });
|