From 4d9e258a1e2f60e4d69a7888fb1e4b86c5a314ff Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Fri, 20 Jun 2025 00:30:30 -0700 Subject: [PATCH] Prevent hard crashing on update notifier fail. (#1254) --- packages/cli/src/ui/utils/updateCheck.ts | 47 +++++++++++++----------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/packages/cli/src/ui/utils/updateCheck.ts b/packages/cli/src/ui/utils/updateCheck.ts index 17d30378..9e2ec233 100644 --- a/packages/cli/src/ui/utils/updateCheck.ts +++ b/packages/cli/src/ui/utils/updateCheck.ts @@ -9,27 +9,32 @@ import { readPackageUp } from 'read-package-up'; import process from 'node:process'; export async function checkForUpdates(): Promise { - // read-package-up looks for the closest package.json from cwd - const pkgResult = await readPackageUp({ cwd: process.cwd() }); - if (!pkgResult) { + try { + // 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; + } catch (e) { + console.warn('Failed to check for updates: ' + e); 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; }