sh_discord_bot/web/update-version.ts

79 lines
2.2 KiB
TypeScript

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<SoftwareVersion> {
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();