From 61c7155bde256113f73db0d429cbe0ad333f9e18 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 13 Feb 2026 03:40:37 +0000 Subject: [PATCH] fix(pgpm): clear update cache after pgpm update and use semver comparison --- pgpm/cli/src/commands.ts | 8 ++++++-- pgpm/cli/src/commands/update.ts | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pgpm/cli/src/commands.ts b/pgpm/cli/src/commands.ts index fbf360368..06e719d05 100644 --- a/pgpm/cli/src/commands.ts +++ b/pgpm/cli/src/commands.ts @@ -1,6 +1,7 @@ import { checkForUpdates } from '@inquirerer/utils'; import { CLIOptions, Inquirerer, ParsedArgs, cliExitWithError, extractFirst, getPackageJson } from 'inquirerer'; import { teardownPgPools } from 'pg-cache'; +import semver from 'semver'; import add from './commands/add'; import adminUsers from './commands/admin-users'; @@ -116,8 +117,11 @@ export const commands = async (argv: Partial, prompter: Inquirerer, pkgVersion: pkg.version, toolName: 'pgpm', }); - if (updateResult.hasUpdate && updateResult.message) { - console.warn(updateResult.message); + if (updateResult.latestVersion + && semver.valid(updateResult.latestVersion) + && semver.valid(pkg.version) + && semver.gt(updateResult.latestVersion, pkg.version)) { + console.warn(`Update available: ${pkg.version} -> ${updateResult.latestVersion}`); console.warn('Run pgpm update to upgrade.'); } } catch { diff --git a/pgpm/cli/src/commands/update.ts b/pgpm/cli/src/commands/update.ts index 7b898d99c..620986ccb 100644 --- a/pgpm/cli/src/commands/update.ts +++ b/pgpm/cli/src/commands/update.ts @@ -1,6 +1,9 @@ import { Logger } from '@pgpmjs/logger'; import { CLIOptions, Inquirerer, cliExitWithError, getPackageJson } from 'inquirerer'; +import { appstash } from 'appstash'; import { spawn } from 'child_process'; +import * as fs from 'fs'; +import * as path from 'path'; import { fetchLatestVersion } from '../utils/npm-version'; const log = new Logger('update'); @@ -65,6 +68,12 @@ export default async ( try { await runNpmInstall(pkgName, registry); + + try { + const cacheFile = path.join(appstash('pgpm').cache, 'update-check.json'); + if (fs.existsSync(cacheFile)) fs.unlinkSync(cacheFile); + } catch {} + const latest = await fetchLatestVersion(pkgName); if (latest) { log.success(`Successfully updated ${pkgName} to version ${latest}.`);