import { Appsettings } from "./src/app/models/config/appsettings"; import { SoftwareVersion } from "./src/app/models/config/software-version"; const jsonFilePath = "./src/assets/config.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[2]; } } else if (branch.startsWith("#")) { const fs = require("fs"); const config: Appsettings = JSON.parse(fs.readFileSync(jsonFilePath, 'utf-8')) major = config.WebVersion.Major; minor = config.WebVersion.Minor; micro = `dev${branch.split("#")[1]}`; } 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: Appsettings = 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();