@@ -14,7 +14,6 @@ import { z } from "zod";
1414import { CliError } from "./errors.js" ;
1515import { getSpinner } from "./utils/cli-env.js" ;
1616import {
17- BIN_NAME ,
1817 COMMAND_NAME ,
1918 IS_NPX ,
2019 PACKAGE_NAME ,
@@ -180,28 +179,37 @@ export async function handleUpdateCommand(): Promise<void> {
180179 // the user can verify.
181180 const agent = getUserAgent ( ) ?? "npm" ;
182181
183- const resolved = resolveCommand ( agent , "global" , [ `${ PACKAGE_NAME } @latest` ] ) ;
182+ const spinner = await getSpinner ( ) ;
183+ spinner . start ( "Checking for latest version..." ) ;
184+
185+ const latest = await fetchLatestVersion ( ) ;
186+ if ( ! latest ) {
187+ spinner . fail ( "Could not reach the npm registry" ) ;
188+ throw new CliError (
189+ "Failed to fetch latest version. Check your network connection."
190+ ) ;
191+ }
192+
193+ if ( ! semverGt ( latest , PACKAGE_VERSION ) ) {
194+ spinner . succeed ( `Already up to date (${ PACKAGE_NAME } @${ PACKAGE_VERSION } )` ) ;
195+ return ;
196+ }
197+
198+ const resolved = resolveCommand ( agent , "global" , [
199+ `${ PACKAGE_NAME } @${ latest } ` ,
200+ ] ) ;
184201 if ( ! resolved ) {
185202 throw new CliError (
186203 `Could not determine install command for package manager "${ agent } ".`
187204 ) ;
188205 }
189206
190- const spinner = await getSpinner ( ) ;
191207 const cmdStr = `${ resolved . command } ${ resolved . args . join ( " " ) } ` ;
192- spinner . start ( `Upgrading ${ PACKAGE_NAME } (${ cmdStr } )...` ) ;
208+ spinner . start ( `Upgrading ${ PACKAGE_NAME } to ${ latest } (${ cmdStr } )...` ) ;
193209
194210 try {
195211 await execFileAsync ( resolved . command , resolved . args ) ;
196-
197- let versionLine = "Upgrade complete" ;
198- try {
199- const { stdout } = await execFileAsync ( BIN_NAME , [ "--version" ] ) ;
200- versionLine = `Upgraded to ${ stdout . trim ( ) } ` ;
201- } catch {
202- // Binary may not be on PATH yet; that's fine
203- }
204- spinner . succeed ( versionLine ) ;
212+ spinner . succeed ( `Upgraded to ${ PACKAGE_NAME } @${ latest } ` ) ;
205213 } catch ( error : unknown ) {
206214 spinner . fail ( "Upgrade failed" ) ;
207215
0 commit comments