feat: read version from package.json, read latest commit and read pre-release tags.

This commit is contained in:
zkldi
2022-05-31 18:46:54 +01:00
parent 38c74338a6
commit 4d585a08e2
3 changed files with 53 additions and 16 deletions
+2
View File
@@ -53,6 +53,7 @@
"@aws-sdk/client-s3": "3.49.0",
"@aws-sdk/signature-v4-crt": "3.49.0",
"@types/bson": "1.0.11",
"@types/semver": "^7.3.9",
"@valuabletouch/winston-seq": "1.3.0",
"bcryptjs": "2.4.3",
"bullmq": "1.68.4",
@@ -85,6 +86,7 @@
"rg-stats": "^0.2.0",
"rimraf": "3.0.2",
"safe-json-stringify": "1.2.0",
"semver": "^7.3.7",
"seq-logging": "1.1.1",
"tachi-common": "0.12.1",
"ts-node": "10.4.0",
+13 -6
View File
@@ -19,6 +19,7 @@ specifiers:
'@types/rate-limit-redis': 1.7.4
'@types/rimraf': 3.0.2
'@types/safe-json-stringify': 1.1.2
'@types/semver': ^7.3.9
'@types/supertest': 2.0.11
'@types/tap': 15.0.5
'@types/uuid': 8.3.4
@@ -64,6 +65,7 @@ specifiers:
rg-stats: ^0.2.0
rimraf: 3.0.2
safe-json-stringify: 1.2.0
semver: ^7.3.7
seq-logging: 1.1.1
supertest: 6.2.2
tachi-common: 0.12.1
@@ -80,6 +82,7 @@ dependencies:
'@aws-sdk/client-s3': 3.49.0_@aws-sdk+signature-v4-crt@3.49.0
'@aws-sdk/signature-v4-crt': 3.49.0
'@types/bson': 1.0.11
'@types/semver': 7.3.9
'@valuabletouch/winston-seq': 1.3.0
bcryptjs: 2.4.3
bullmq: 1.68.4
@@ -112,6 +115,7 @@ dependencies:
rg-stats: 0.2.0
rimraf: 3.0.2
safe-json-stringify: 1.2.0
semver: 7.3.7
seq-logging: 1.1.1
tachi-common: 0.12.1
ts-node: 10.4.0_2615db9039ce432b4abf2fc39ef336ec
@@ -1504,6 +1508,10 @@ packages:
resolution: {integrity: sha512-Hj/LZMBXFH3Qj9sNmNu6syBpkZqBaM00HgP7naf9CnZhB3kdxmrenWUD2cY6vvTWjuBM3NPOLknPKDUOQuTWXA==}
dev: true
/@types/semver/7.3.9:
resolution: {integrity: sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==}
dev: false
/@types/serve-static/1.13.10:
resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==}
dependencies:
@@ -1560,7 +1568,7 @@ packages:
functional-red-black-tree: 1.0.1
ignore: 5.2.0
regexpp: 3.2.0
semver: 7.3.5
semver: 7.3.7
tsutils: 3.21.0_typescript@4.5.5
typescript: 4.5.5
transitivePeerDependencies:
@@ -1633,7 +1641,7 @@ packages:
debug: 4.3.3
globby: 11.1.0
is-glob: 4.0.3
semver: 7.3.5
semver: 7.3.7
tsutils: 3.21.0_typescript@4.5.5
typescript: 4.5.5
transitivePeerDependencies:
@@ -5123,13 +5131,12 @@ packages:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
hasBin: true
/semver/7.3.5:
resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
/semver/7.3.7:
resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/send/0.17.2:
resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==}
@@ -5411,7 +5418,7 @@ packages:
mime: 2.6.0
qs: 6.10.3
readable-stream: 3.6.0
semver: 7.3.5
semver: 7.3.7
transitivePeerDependencies:
- supports-color
dev: true
+38 -10
View File
@@ -1,10 +1,11 @@
// Note that Version Info is intentionally identical between all variants of tachi
// viz. btchi and ktchi share versioning. This is because they
// essentially share codebases.
const MAJOR = 2;
const MINOR = 2;
const PATCH = 0;
import CreateLogCtx from "lib/logger/logger";
import semver from "semver";
import { execSync } from "child_process";
import fs from "fs";
import path from "path";
// As is with all front-facing zkldi projects, the version names for tachi-server
// are from an album I like. In this case, the album is Portishead - Dummy.
@@ -47,13 +48,40 @@ const PORTISHEAD_DUMMY = [
// v2.11+ onwards are not expected to occur, but if they do, we'll figure something out.
];
const logger = CreateLogCtx(__filename);
const packageJSON = JSON.parse(
fs.readFileSync(path.join(__dirname, "../../../package.json"), "utf-8")
) as { version: string };
const semverInfo = semver.parse(packageJSON.version);
if (!semverInfo) {
logger.warn(
`Couldn't parse semverInfo out of package.json? Got a string of '${packageJSON.version}', but couldn't parse. Defaulting to 0.`
);
}
let commit: string | null = null;
try {
// This fetches the HEAD of our current running branch. This is useful for debugging.
// Note that git returns this with a trailing newline, so we have to trim that off.
commit = execSync("git rev-parse --short HEAD").toString("utf-8").trim();
} catch (err) {
logger.warn(`Failed to read what commit we're on -- Using null as our commit version.`, {
err,
});
}
export const VERSION_INFO = {
major: MAJOR,
minor: MINOR,
patch: PATCH,
name: PORTISHEAD_DUMMY[MINOR],
major: semverInfo?.major ?? 0,
minor: semverInfo?.minor ?? 0,
patch: semverInfo?.patch ?? 0,
commit,
name: PORTISHEAD_DUMMY[semverInfo?.minor ?? 0] ?? "No Version Name",
};
export const VERSION_STR = `${MAJOR}.${MINOR}.${PATCH}`;
export const VERSION_STR = semverInfo?.raw ?? "0.0.0-unknown";
export const VERSION_PRETTY = `v${VERSION_STR} (${VERSION_INFO.name})`;
export const VERSION_PRETTY = `v${VERSION_STR} (${VERSION_INFO.name}) [${commit}]`;