-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit_versioning.js
More file actions
47 lines (42 loc) · 2.48 KB
/
git_versioning.js
File metadata and controls
47 lines (42 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const child_process = require("child_process");
const logger = require("./pmng_server/platform_logger").logger();
module.exports.readGitInfo = (disableReject = false) => {
return new Promise((resolve, reject) => {
if(process.env.PMNG_GIT_TAG != undefined && process.env.PMNG_GIT_COMMIT != undefined) {
logger.tagInfo("GIT", "Git information already loaded.");
logger.tagInfo("GIT", process.env.PMNG_GIT_COMMIT + " (" + process.env.PMNG_GIT_TAG + ")");
resolve();
} else {
child_process.exec("git config --global --add safe.directory " + process.cwd(), (safeError, safeStdout, safeStderr) => {
if(safeError) reject(safeError);
else child_process.exec("git log -1 --format=oneline", (error, stdout, stderr) => {
if(error) reject(error);
else {
let logRegex = /^(?<commit>[a-f0-9]{40}) (?:\((?:tag: (?<tag>[^,]+)[^)]*|)\) |).*$/gm;
let logResult = logRegex.exec(stdout.trim());
if(logResult == null) reject(new Error("Cannot get last commit log!"));
else {
process.env.PMNG_GIT_COMMIT = logResult.groups["commit"];
let logTag = logResult.groups["tag"];
if(logTag != undefined) {
process.env.PMNG_GIT_TAG = logTag;
logger.tagInfo("GIT", process.env.PMNG_GIT_COMMIT + " (" + process.env.PMNG_GIT_TAG + ")");
resolve();
} else {
logger.tagInfo("GIT", "Using 'git describe --tags' to read tag info...");
child_process.exec("git describe --tags", (tagError, tagStdout, tagStderr) => {
process.env.PMNG_GIT_TAG = tagError == null ? tagStdout.trim().split("-")[0] : "unknown";
logger.tagInfo("GIT", process.env.PMNG_GIT_COMMIT + " (" + process.env.PMNG_GIT_TAG + ")");
resolve();
});
}
}
}
});
});
}
}).catch((error) => {
if(!disableReject) throw error;
else logger.tagError("GIT", "Cannot get last commit log! " + (error.message ?? error));
});
};