summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
authorTommaso Sciortino <[email protected]>2025-06-06 16:21:20 -0700
committerGitHub <[email protected]>2025-06-06 16:21:20 -0700
commit76ec9122c0dd36f0535a74c65811c0f7bd138f4d (patch)
tree0c13eb04f40fd084dd76453598d95ea785231243 /packages/cli/src
parente94a10023dcb7a3a3a88262e069815de3a985f7c (diff)
clean up version lookup code (#804)
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/config/config.ts15
-rw-r--r--packages/cli/src/gemini.tsx11
-rw-r--r--packages/cli/src/ui/App.tsx1
-rw-r--r--packages/cli/src/ui/components/Footer.tsx1
-rw-r--r--packages/cli/src/utils/version.ts34
5 files changed, 39 insertions, 23 deletions
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index e363587f..f18ddcdf 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -18,11 +18,11 @@ import {
ApprovalMode,
} from '@gemini-code/core';
import { Settings } from './settings.js';
-import { readPackageUp } from 'read-package-up';
import {
getEffectiveModel,
type EffectiveModelCheckResult,
} from '../utils/modelCheck.js';
+import { getCliVersion } from '../utils/version.js';
// Simple console logger for now - replace with actual logger if available
const logger = {
@@ -239,15 +239,6 @@ export async function loadCliConfig(
}
async function createUserAgent(): Promise<string> {
- try {
- const packageJsonInfo = await readPackageUp({ cwd: import.meta.url });
- const cliVersion = packageJsonInfo?.packageJson.version || 'unknown';
- return `GeminiCLI/${cliVersion} Node.js/${process.version} (${process.platform}; ${process.arch})`;
- } catch (error: unknown) {
- const message = error instanceof Error ? error.message : String(error);
- logger.warn(
- `Could not determine package version for User-Agent: ${message}`,
- );
- return `GeminiCLI/unknown Node.js/${process.version} (${process.platform}; ${process.arch})`;
- }
+ const cliVersion = await getCliVersion();
+ return `GeminiCLI/${cliVersion} Node.js/${process.version} (${process.platform}; ${process.arch})`;
}
diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx
index e2169980..f3b912bf 100644
--- a/packages/cli/src/gemini.tsx
+++ b/packages/cli/src/gemini.tsx
@@ -9,9 +9,7 @@ import { render } from 'ink';
import { App } from './ui/App.js';
import { loadCliConfig } from './config/config.js';
import { readStdin } from './utils/readStdin.js';
-import { readPackageUp } from 'read-package-up';
-import { fileURLToPath } from 'node:url';
-import { dirname } from 'node:path';
+import { getCliVersion } from './utils/version.js';
import { sandbox_command, start_sandbox } from './utils/sandbox.js';
import { LoadedSettings, loadSettings } from './config/settings.js';
import { themeManager } from './ui/themes/theme-manager.js';
@@ -34,9 +32,6 @@ import {
WriteFileTool,
} from '@gemini-code/core';
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = dirname(__filename);
-
export async function main() {
// warn about deprecated environment variables
if (process.env.GEMINI_CODE_MODEL) {
@@ -107,9 +102,7 @@ export async function main() {
// Render UI, passing necessary config values. Check that there is no command line question.
if (process.stdin.isTTY && input?.length === 0) {
- const readUpResult = await readPackageUp({ cwd: __dirname });
- const cliVersion =
- process.env.CLI_VERSION || readUpResult?.packageJson.version || 'unknown';
+ const cliVersion = await getCliVersion();
render(
<React.StrictMode>
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index b90f8d70..2df5ba0a 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -501,7 +501,6 @@ export const App = ({
debugMode={config.getDebugMode()}
branchName={branchName}
debugMessage={debugMessage}
- cliVersion={cliVersion}
corgiMode={corgiMode}
errorCount={errorCount}
showErrorDetails={showErrorDetails}
diff --git a/packages/cli/src/ui/components/Footer.tsx b/packages/cli/src/ui/components/Footer.tsx
index ea83a031..1a4be93e 100644
--- a/packages/cli/src/ui/components/Footer.tsx
+++ b/packages/cli/src/ui/components/Footer.tsx
@@ -18,7 +18,6 @@ interface FooterProps {
branchName?: string;
debugMode: boolean;
debugMessage: string;
- cliVersion: string;
corgiMode: boolean;
errorCount: number;
showErrorDetails: boolean;
diff --git a/packages/cli/src/utils/version.ts b/packages/cli/src/utils/version.ts
new file mode 100644
index 00000000..8ccc3737
--- /dev/null
+++ b/packages/cli/src/utils/version.ts
@@ -0,0 +1,34 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { readPackageUp } from 'read-package-up';
+import { fileURLToPath } from 'node:url';
+import { dirname } from 'node:path';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+
+let cliVersion: string | undefined;
+
+export async function getCliVersion(): Promise<string> {
+ if (cliVersion) {
+ return cliVersion;
+ }
+
+ if (process.env.CLI_VERSION) {
+ cliVersion = process.env.CLI_VERSION;
+ return cliVersion;
+ }
+
+ try {
+ const readUpResult = await readPackageUp({ cwd: __dirname });
+ cliVersion = readUpResult?.packageJson.version || 'unknown';
+ } catch (_e) {
+ cliVersion = 'unknown';
+ }
+
+ return cliVersion;
+}