Support short version syntax

This commit is contained in:
Benoit Daloze
2020-01-03 14:03:19 +01:00
parent 83e66a9c15
commit 02a916e783
4 changed files with 61 additions and 23 deletions
+26 -8
View File
@@ -37,17 +37,35 @@ async function getLatestReleaseTag() {
}
async function getRubyEngineAndVersion(rubyVersion) {
let engine, version
if (rubyVersion.match(/^\d+/)) { // X.Y.Z => ruby-X.Y.Z
return 'ruby-' + rubyVersion
engine = 'ruby'
version = rubyVersion
} else if (!rubyVersion.includes('-')) { // myruby -> myruby-stableVersion
const engine = rubyVersion
const response = await axios.get(`${metadataURL}/versions.json`)
const stableVersions = response.data[engine]
const latestStableVersion = stableVersions[stableVersions.length-1]
return engine + '-' + latestStableVersion
} else {
return rubyVersion
engine = rubyVersion
version = '' // Let the logic below find the version
} else { // engine-X.Y.Z
[engine, version] = rubyVersion.split('-', 2)
}
const response = await axios.get(`${metadataURL}/versions.json`)
const stableVersions = response.data
const engineVersions = stableVersions[engine]
if (!engineVersions) {
throw new Error(`Unknown engine ${engine} (${rubyVersion})`)
}
if (!engineVersions.includes(version)) {
engineVersions.reverse() // inplace!
let found = engineVersions.find(v => v.startsWith(version))
if (found) {
version = found
} else {
throw new Error(`Unknown version ${version} (${rubyVersion})`)
}
}
return engine + '-' + version
}
function getVirtualEnvironmentName() {