From 994853bf8e1b486fc78a4c3fc702734cdbb3812f Mon Sep 17 00:00:00 2001 From: Dagur Valberg Johannsson Date: Tue, 14 Apr 2026 09:14:28 +0200 Subject: [PATCH] ci: Fix version comparison bug Auto-publishing had a version comparison bug, causing it to attempt to republish old versions instead using next avaiable version number. --- contrib/auto-publish.js | 13 +++++++++++-- contrib/force-publish.js | 13 +++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/contrib/auto-publish.js b/contrib/auto-publish.js index af4ac94..55f7de2 100644 --- a/contrib/auto-publish.js +++ b/contrib/auto-publish.js @@ -94,6 +94,14 @@ function getCurrentVersion(packagePath) { return packageJson.version; } +function compareVersions(a, b) { + const [aMajor, aMinor, aPatch] = a.split('.').map(Number); + const [bMajor, bMinor, bPatch] = b.split('.').map(Number); + if (aMajor !== bMajor) return aMajor - bMajor; + if (aMinor !== bMinor) return aMinor - bMinor; + return aPatch - bPatch; +} + function bumpVersion(currentVersion, latestNpmVersion) { const [major, minor, patch] = currentVersion.split('.').map(Number); @@ -102,12 +110,13 @@ function bumpVersion(currentVersion, latestNpmVersion) { } const [npmMajor, npmMinor, npmPatch] = latestNpmVersion.split('.').map(Number); + const cmp = compareVersions(currentVersion, latestNpmVersion); - if (currentVersion > latestNpmVersion) { + if (cmp > 0) { return `${major}.${minor}.${patch + 1}`; } - if (latestNpmVersion > currentVersion) { + if (cmp < 0) { return `${npmMajor}.${npmMinor}.${npmPatch + 1}`; } diff --git a/contrib/force-publish.js b/contrib/force-publish.js index b5c7630..0806736 100644 --- a/contrib/force-publish.js +++ b/contrib/force-publish.js @@ -78,6 +78,14 @@ function getCurrentVersion(packagePath) { return packageJson.version; } +function compareVersions(a, b) { + const [aMajor, aMinor, aPatch] = a.split('.').map(Number); + const [bMajor, bMinor, bPatch] = b.split('.').map(Number); + if (aMajor !== bMajor) return aMajor - bMajor; + if (aMinor !== bMinor) return aMinor - bMinor; + return aPatch - bPatch; +} + function bumpVersion(currentVersion, latestNpmVersion) { const [major, minor, patch] = currentVersion.split('.').map(Number); @@ -86,12 +94,13 @@ function bumpVersion(currentVersion, latestNpmVersion) { } const [npmMajor, npmMinor, npmPatch] = latestNpmVersion.split('.').map(Number); + const cmp = compareVersions(currentVersion, latestNpmVersion); - if (currentVersion > latestNpmVersion) { + if (cmp > 0) { return `${major}.${minor}.${patch + 1}`; } - if (latestNpmVersion > currentVersion) { + if (cmp < 0) { return `${npmMajor}.${npmMinor}.${npmPatch + 1}`; }