Update git-utils.ts
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import gitInfo from "../public/git-info.json";
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
export async function getGitCommitInfo(): Promise<GitInfo> {
|
||||
// Return cached value if available
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user