mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-10 14:10:37 -07:00
Introduce optional gitCommitInfo as app-wide metadata.
This change adds an optional `gitCommitInfo` string to the app state, which, if set by the GET_COMMIT_INFO environment variable when the application is launched, will be displayed in the /about section. The `start.sh` and `build_package.sh` scripts set `GET_COMMIT_INFO` to the most recent git commit's short hash if known, appending the string "(local modifications)" if additional changes are detected beyond that point.
This commit is contained in:
@@ -68,12 +68,14 @@ async function main() {
|
||||
const readUpResult = await readPackageUp({ cwd: __dirname });
|
||||
const cliVersion =
|
||||
process.env.CLI_VERSION || readUpResult?.packageJson.version || 'unknown';
|
||||
const gitCommitInfo = process.env.GIT_COMMIT_INFO || 'N/A';
|
||||
|
||||
render(
|
||||
React.createElement(App, {
|
||||
config,
|
||||
settings,
|
||||
cliVersion,
|
||||
gitCommitInfo,
|
||||
startupWarnings,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -50,6 +50,7 @@ interface AppProps {
|
||||
config: Config;
|
||||
settings: LoadedSettings;
|
||||
cliVersion: string;
|
||||
gitCommitInfo?: string;
|
||||
startupWarnings?: string[];
|
||||
}
|
||||
|
||||
@@ -57,6 +58,7 @@ export const App = ({
|
||||
config,
|
||||
settings,
|
||||
cliVersion,
|
||||
gitCommitInfo: _gitCommitInfo,
|
||||
startupWarnings = [],
|
||||
}: AppProps) => {
|
||||
const { history, addItem, clearItems } = useHistory();
|
||||
|
||||
@@ -13,6 +13,7 @@ interface AboutBoxProps {
|
||||
osVersion: string;
|
||||
sandboxEnv: string;
|
||||
modelVersion: string;
|
||||
gitCommitInfo?: string;
|
||||
}
|
||||
|
||||
export const AboutBox: React.FC<AboutBoxProps> = ({
|
||||
@@ -20,6 +21,7 @@ export const AboutBox: React.FC<AboutBoxProps> = ({
|
||||
osVersion,
|
||||
sandboxEnv,
|
||||
modelVersion,
|
||||
gitCommitInfo,
|
||||
}) => (
|
||||
<Box
|
||||
borderStyle="round"
|
||||
@@ -44,6 +46,18 @@ export const AboutBox: React.FC<AboutBoxProps> = ({
|
||||
<Text>{cliVersion}</Text>
|
||||
</Box>
|
||||
</Box>
|
||||
{gitCommitInfo && gitCommitInfo !== 'N/A' && (
|
||||
<Box flexDirection="row">
|
||||
<Box width="35%">
|
||||
<Text bold color={Colors.LightBlue}>
|
||||
Git Commit
|
||||
</Text>
|
||||
</Box>
|
||||
<Box>
|
||||
<Text>{gitCommitInfo}</Text>
|
||||
</Box>
|
||||
</Box>
|
||||
)}
|
||||
<Box flexDirection="row">
|
||||
<Box width="35%">
|
||||
<Text bold color={Colors.LightBlue}>
|
||||
|
||||
@@ -53,6 +53,7 @@ export const HistoryItemDisplay: React.FC<HistoryItemDisplayProps> = ({
|
||||
osVersion={item.osVersion}
|
||||
sandboxEnv={item.sandboxEnv}
|
||||
modelVersion={item.modelVersion}
|
||||
gitCommitInfo={item.gitCommitInfo} // Added this line
|
||||
/>
|
||||
)}
|
||||
{item.type === 'tool_group' && (
|
||||
|
||||
@@ -56,6 +56,7 @@ export const useSlashCommandProcessor = (
|
||||
osVersion: message.osVersion,
|
||||
sandboxEnv: message.sandboxEnv,
|
||||
modelVersion: message.modelVersion,
|
||||
gitCommitInfo: message.gitCommitInfo, // Added this line
|
||||
};
|
||||
} else {
|
||||
historyItemContent = {
|
||||
@@ -176,6 +177,7 @@ export const useSlashCommandProcessor = (
|
||||
sandboxEnv = `sandbox-exec (${process.env.SEATBELT_PROFILE || 'unknown'})`;
|
||||
}
|
||||
const modelVersion = config?.getModel() || 'Unknown';
|
||||
const gitCommitInfo = process.env.GIT_COMMIT_INFO || 'N/A';
|
||||
|
||||
addMessage({
|
||||
type: MessageType.ABOUT,
|
||||
@@ -184,6 +186,7 @@ export const useSlashCommandProcessor = (
|
||||
osVersion,
|
||||
sandboxEnv,
|
||||
modelVersion,
|
||||
gitCommitInfo,
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@@ -86,6 +86,7 @@ export type HistoryItemAbout = HistoryItemBase & {
|
||||
osVersion: string;
|
||||
sandboxEnv: string;
|
||||
modelVersion: string;
|
||||
gitCommitInfo?: string;
|
||||
};
|
||||
|
||||
export type HistoryItemToolGroup = HistoryItemBase & {
|
||||
@@ -137,6 +138,7 @@ export type Message =
|
||||
osVersion: string;
|
||||
sandboxEnv: string;
|
||||
modelVersion: string;
|
||||
gitCommitInfo?: string;
|
||||
content?: string; // Optional content, not really used for ABOUT
|
||||
};
|
||||
|
||||
|
||||
@@ -20,6 +20,19 @@ if [[ $(pwd) != *"/packages/"* ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Determine Git information
|
||||
GIT_COMMIT_INFO="N/A"
|
||||
if command -v git &> /dev/null && git rev-parse --is-inside-work-tree &> /dev/null; then
|
||||
GIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "")
|
||||
if [ -n "$GIT_HASH" ]; then
|
||||
GIT_COMMIT_INFO="$GIT_HASH"
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
GIT_COMMIT_INFO="$GIT_COMMIT_INFO (local modifications)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
export GIT_COMMIT_INFO
|
||||
|
||||
# clean dist directory
|
||||
# rm -rf dist/*
|
||||
|
||||
|
||||
@@ -32,6 +32,19 @@ if [ -n "${DEBUG:-}" ] && ! scripts/sandbox_command.sh -q; then
|
||||
fi
|
||||
node_args+=("./packages/cli" "$@")
|
||||
|
||||
# Determine Git information
|
||||
GIT_COMMIT_INFO="N/A"
|
||||
if command -v git &> /dev/null && git rev-parse --is-inside-work-tree &> /dev/null; then
|
||||
GIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "")
|
||||
if [ -n "$GIT_HASH" ]; then
|
||||
GIT_COMMIT_INFO="$GIT_HASH"
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
GIT_COMMIT_INFO="$GIT_COMMIT_INFO (local modifications)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# DEV=true to enable React Dev Tools (https://github.com/vadimdemedes/ink?tab=readme-ov-file#using-react-devtools)
|
||||
# CLI_VERSION to display in the app ui footer
|
||||
CLI_VERSION='development' DEV=true node "${node_args[@]}"
|
||||
# GIT_COMMIT_INFO to display in the about box
|
||||
GIT_COMMIT_INFO="${GIT_COMMIT_INFO}" CLI_VERSION='development' DEV=true node "${node_args[@]}"
|
||||
|
||||
Reference in New Issue
Block a user