diff --git a/server.js b/server.js index 9e9e8b8..9d68ef2 100644 --- a/server.js +++ b/server.js @@ -1048,13 +1048,10 @@ cache(function(data, match, sendBadge) { sendBadge(format, badgeData); return; } - var version = releases[0].version; - for (var i = 0; i < releases.length; i++) { - var current = releases[i].version; - if (semver.gt(current, version)) { - version = current; - } - } + var versions = releases.map(function(version) { + return version.version; + }); + var version = latestVersion(versions); if (unstable(version)) { badgeData.colorscheme = "yellow"; } else { @@ -1211,3 +1208,15 @@ function metric(n) { } return ''+n; } + +// Given a list of versions (as strings), return the latest version. +function latestVersion(versions) { + var version = ''; + try { + version = semver.maxSatisfying(versions, ''); + } catch(e) { + versions = versions.sort(); + version = versions[versions.length - 1]; + } + return version; +}