import { VersionSettings } from "./src/app/models/config/app-settings"; import { SoftwareVersion } from "./src/app/models/config/software-version"; import fs from "fs"; const jsonFilePath = "./src/assets/version.json"; function Main(): void { getVersion() .then(version => { setVersion(version); }) .catch(err => { throw err; }); } async function getVersion(): Promise { const util = require("util"); const exec = util.promisify(require("child_process").exec); let major = "0"; let minor = "0"; let micro = "0"; const branch: string = (await exec("git rev-parse --abbrev-ref HEAD")).stdout.toString().trim(); if (branch.includes(".")) { const versions = branch.split("."); if (versions.length > 0) { major = versions[0]; } if (versions.length > 1) { minor = versions[1]; } if (versions.length > 2) { micro = versions.slice(2).toString().replace(",", "."); } } else if (branch.startsWith("#")) { const fs = require("fs"); const config: VersionSettings = JSON.parse(fs.readFileSync(jsonFilePath, "utf-8")); major = config.WebVersion.Major; minor = config.WebVersion.Minor; micro = `dev${branch.split("#")[1]}`; } else { const fs = require("fs"); const config: VersionSettings = JSON.parse(fs.readFileSync(jsonFilePath, "utf-8")); major = config.WebVersion.Major; minor = config.WebVersion.Minor; micro = config.WebVersion.Micro; } return new SoftwareVersion(major, minor, micro); } async function setVersion(version: SoftwareVersion) { const fs = require("fs"); fs.readFile(jsonFilePath, "utf8", (err: Error, data: string) => { if (err) { throw err; } const settings: VersionSettings = JSON.parse(data); settings.WebVersion = version; fs.writeFile(jsonFilePath, JSON.stringify(settings, null, 4), "utf8", () => { }); }); fs.readFile("./package.json", "utf8", (err: Error, data: string) => { if (err) { throw err; } const settings = JSON.parse(data); settings.version = version.getVersionString(); fs.writeFile("./package.json", JSON.stringify(settings, null, 4), "utf8", () => { }); }); } Main();