Spaces:
Sleeping
Sleeping
| 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); | |
| } | |
| }); | |
| }); | |