Skip to content

Commit ebdc4e4

Browse files
committed
improve version display on update
1 parent 6007a9c commit ebdc4e4

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/update.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import { z } from "zod";
1414
import { CliError } from "./errors.js";
1515
import { getSpinner } from "./utils/cli-env.js";
1616
import {
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

Comments
 (0)