2022-11-03 13:50:27 +03:00
|
|
|
// @ts-check
|
2023-02-19 11:40:39 +03:00
|
|
|
import { execSync } from 'node:child_process';
|
2022-11-03 13:50:27 +03:00
|
|
|
|
|
|
|
const hasGit = () => {
|
|
|
|
try {
|
|
|
|
execSync('git --version');
|
|
|
|
} catch {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getTopLevel = () => execSync('git rev-parse --show-toplevel');
|
|
|
|
const isRepository = () => {
|
|
|
|
try {
|
|
|
|
getTopLevel();
|
|
|
|
} catch {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getGitVersion = () => {
|
|
|
|
if (!hasGit() || !isRepository()) {
|
|
|
|
console.error(
|
|
|
|
"You haven't installed git or it does not exist in your PATH."
|
|
|
|
);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const VERSION = execSync('git describe --always --dirty')
|
|
|
|
.toString()
|
|
|
|
// remove empty line
|
|
|
|
.replace(/[\s\r\n]+$/, '');
|
|
|
|
|
|
|
|
return VERSION;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getCommitHash = (rev = 'HEAD') =>
|
|
|
|
execSync(`git rev-parse --short ${rev}`).toString();
|
|
|
|
|
2023-02-19 11:40:39 +03:00
|
|
|
export { getCommitHash, getGitVersion };
|