@wener/console
Version:
Base console UI toolkit
51 lines (45 loc) • 1.37 kB
text/typescript
import { dayjs } from '@wener/common/dayjs';
export interface BuildInfo {
version: string;
date?: string;
isProd: boolean;
isDev: boolean;
commit: {
shortSha?: string;
timestamp?: string;
tag?: string;
refName?: string;
branch?: string;
};
}
let _info: BuildInfo;
export function getBuildInfo(): BuildInfo {
return (_info ||= (() => {
if (!globalThis?.process) {
// avoid below reference error
(globalThis as any).process = { env: {} as any };
}
const buildInfo = {
date: process.env.BUILD_DATE,
commit: {
shortSha: process.env.CI_COMMIT_SHORT_SHA,
timestamp: process.env.CI_COMMIT_TIMESTAMP,
tag: process.env.CI_COMMIT_TAG,
refName: process.env.CI_COMMIT_REF_NAME,
branch: process.env.CI_COMMIT_BRANCH,
},
};
const midInfo = {
...buildInfo,
version: buildInfo.date ? dayjs(buildInfo.date).format('YYYY.MM.DD') : '0.0.0',
isProd: Boolean(
buildInfo.commit.branch === 'main' ||
buildInfo.commit.branch === 'master' ||
buildInfo.commit.branch?.startsWith('release/') ||
buildInfo.commit.refName?.match(/^v\d/) ||
buildInfo.commit.refName?.match(/^release\//),
),
};
return Object.freeze({ ...midInfo, date: buildInfo.date, isDev: !midInfo.isProd });
})());
}