Update git-utils.ts

This commit is contained in:
NotII
2025-04-06 16:34:57 +01:00
parent 6a86815836
commit 3cd46c63ad

View File

@@ -1,3 +1,5 @@
import gitInfo from "../public/git-info.json";
/** /**
* Git utility to load commit hash in both development and production environments * Git utility to load commit hash in both development and production environments
*/ */
@@ -16,56 +18,5 @@ let cachedGitInfo: GitInfo | null = null;
* - Returns "dev" if nothing is available * - Returns "dev" if nothing is available
*/ */
export async function getGitCommitInfo(): Promise<GitInfo> { export async function getGitCommitInfo(): Promise<GitInfo> {
// Return cached value if available return gitInfo;
if (cachedGitInfo) {
return cachedGitInfo;
}
// First, check if we have the env variable (from Docker)
if (process.env.GIT_COMMIT_SHA) {
const gitInfo: GitInfo = {
commitHash: process.env.GIT_COMMIT_SHA,
buildTime: new Date().toISOString(),
};
cachedGitInfo = gitInfo;
return gitInfo;
}
// In the browser, fetch from the public directory
if (typeof window !== 'undefined') {
try {
const response = await fetch('/git-info.json');
if (response.ok) {
const gitInfo: GitInfo = await response.json();
cachedGitInfo = gitInfo;
return gitInfo;
}
} catch (error) {
console.warn('Could not fetch git info from public directory', error);
}
} else {
// On the server (during local development), try to load from the static directory
try {
// We use dynamic import to avoid bundling this in the client build
const fs = require('fs');
const path = require('path');
const gitInfoPath = path.join(process.cwd(), 'public', 'git-info.json');
if (fs.existsSync(gitInfoPath)) {
const gitInfo: GitInfo = JSON.parse(fs.readFileSync(gitInfoPath, 'utf8'));
cachedGitInfo = gitInfo;
return gitInfo;
}
} catch (error) {
console.warn('Could not read git info from file system', error);
}
}
// Default if nothing else works
const defaultGitInfo: GitInfo = {
commitHash: 'development',
buildTime: new Date().toISOString(),
};
return defaultGitInfo;
} }