diff --git a/deno.json b/deno.json index 8569ebb..2e737f7 100644 --- a/deno.json +++ b/deno.json @@ -1,6 +1,6 @@ { "name": "@serve.zone/nupst", - "version": "4.0.7", + "version": "4.0.8", "exports": "./mod.ts", "tasks": { "dev": "deno run --allow-all mod.ts", diff --git a/ts/cli/service-handler.ts b/ts/cli/service-handler.ts index 9422d0c..2ee52c7 100644 --- a/ts/cli/service-handler.ts +++ b/ts/cli/service-handler.ts @@ -133,22 +133,43 @@ export class ServiceHandler { ); console.log(''); - logger.info('Updating NUPST to latest version...'); - console.log(''); + logger.info('Checking for updates...'); try { + // Get current version + const currentVersion = this.nupst.getVersion(); + + // Fetch latest version from Gitea API + const apiUrl = 'https://code.foss.global/api/v1/repos/serve.zone/nupst/releases/latest'; + const response = execSync(`curl -sSL ${apiUrl}`).toString(); + const release = JSON.parse(response); + const latestVersion = release.tag_name; // e.g., "v4.0.7" + + logger.dim(`Current version: ${currentVersion}`); + logger.dim(`Latest version: ${latestVersion}`); + console.log(''); + + // Compare versions (both are in format "v4.0.7") + if (currentVersion === latestVersion) { + logger.success('Already up to date!'); + console.log(''); + return; + } + + logger.info(`New version available: ${latestVersion}`); + logger.dim('Downloading and installing...'); + console.log(''); + // Download and run the install script // This handles everything: download binary, stop service, replace, restart const installUrl = 'https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh'; - logger.dim('Downloading install script...'); execSync(`curl -sSL ${installUrl} | bash`, { stdio: 'inherit', // Show install script output to user }); console.log(''); - logger.success('Update completed successfully!'); - logger.dim('Run "nupst service status" to verify the update.'); + logger.success(`Updated to ${latestVersion}`); console.log(''); } catch (error) { console.log('');