diff options
| author | Eddie Santos <[email protected]> | 2025-06-17 08:24:07 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-17 15:24:07 +0000 |
| commit | c3971754bf4bd5877d7a57c523b981c09d4fa35d (patch) | |
| tree | bda44458964d2c141977e321ed39cfd2dba99a8d /packages/cli/src/ui/utils | |
| parent | bc3fa71234638abd623479d81b52302c21630e87 (diff) | |
Auto-update notifications (#1110)
Diffstat (limited to 'packages/cli/src/ui/utils')
| -rw-r--r-- | packages/cli/src/ui/utils/updateCheck.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/cli/src/ui/utils/updateCheck.ts b/packages/cli/src/ui/utils/updateCheck.ts new file mode 100644 index 00000000..17d30378 --- /dev/null +++ b/packages/cli/src/ui/utils/updateCheck.ts @@ -0,0 +1,35 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import updateNotifier from 'update-notifier'; +import { readPackageUp } from 'read-package-up'; +import process from 'node:process'; + +export async function checkForUpdates(): Promise<string | null> { + // read-package-up looks for the closest package.json from cwd + const pkgResult = await readPackageUp({ cwd: process.cwd() }); + if (!pkgResult) { + return null; + } + + const { packageJson } = pkgResult; + const notifier = updateNotifier({ + pkg: { + name: packageJson.name, + version: packageJson.version, + }, + // check every time + updateCheckInterval: 0, + // allow notifier to run in scripts + shouldNotifyInNpmScript: true, + }); + + if (notifier.update) { + return `Gemini CLI update available! ${notifier.update.current} → ${notifier.update.latest}\nRun npm install -g ${packageJson.name} to update`; + } + + return null; +} |
