From 005ea4146be8d9dcd56b67782954ec38d2fc5b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gergely=20B=C3=A9k=C3=A9si?= Date: Tue, 5 May 2026 12:00:10 +0200 Subject: [PATCH] feat: show warning when new swarm-cli version is available --- src/command/root-command/index.ts | 3 +++ src/service/version_checker.ts | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/service/version_checker.ts diff --git a/src/command/root-command/index.ts b/src/command/root-command/index.ts index 11f62adf..33e882ba 100644 --- a/src/command/root-command/index.ts +++ b/src/command/root-command/index.ts @@ -6,6 +6,7 @@ import { parseHeaders } from '../../utils' import { ConfigOption } from '../../utils/types/config-option' import { CONFIG_OPTIONS, CommandConfig } from './command-config' import { CommandLog, VerbosityLevel } from './command-log' +import { checkForUpdates } from '../../service/version_checker' export class RootCommand { @ExternalOption('bee-api-url') @@ -57,6 +58,8 @@ export class RootCommand { this.commandConfig = new CommandConfig(this.appName, this.console, this.configFile, this.configFolder) this.sourcemap = Utils.getSourcemap() + checkForUpdates() + CONFIG_OPTIONS.forEach((option: ConfigOption) => { this.maybeSetFromConfig(option) }) diff --git a/src/service/version_checker.ts b/src/service/version_checker.ts new file mode 100644 index 00000000..0a776c67 --- /dev/null +++ b/src/service/version_checker.ts @@ -0,0 +1,22 @@ +import PackageJson from '../../package.json' +import { CommandLog, VerbosityLevel } from '../command/root-command/command-log' +import { warningText } from '../utils/text' + +const LATEST_RELEASE_URL = 'https://api.github.com/repos/ethersphere/swarm-cli/releases/latest' + +export async function checkForUpdates() { + const console = new CommandLog(VerbosityLevel.Normal) + await fetch(LATEST_RELEASE_URL) + .then(res => res.json()) + .then((data: { tag_name: string }) => { + const latestVersion = data.tag_name.replace(/^v/, '') + + if (latestVersion !== PackageJson.version) { + console.log( + warningText( + `A new version of swarm-cli is available: ${latestVersion}. You are using version ${PackageJson.version}. Please update to the latest version.`, + ), + ) + } + }) +}