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
+1 -1
View File
@@ -6,7 +6,7 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-16.04', 'ubuntu-18.04', 'macos-latest' ]
ruby: [ '2.4.9', '2.5.7', '2.6.5', '2.7.0', 'truffleruby', 'jruby' ]
ruby: [ 'ruby-2.4', '2.5', 'ruby-2.6.5', '2.7.0', 'truffleruby', 'jruby' ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
+8 -6
View File
@@ -26,7 +26,7 @@ jobs:
- uses: actions/checkout@v2
- uses: eregon/use-ruby-action@master
with:
ruby-version: ruby-2.6.5
ruby-version: ruby-2.6
- run: ruby -v
```
@@ -41,7 +41,7 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest', 'macos-latest' ]
ruby: [ 'ruby-2.6.5', 'ruby-2.7.0', 'truffleruby-19.3.0', 'jruby-9.2.9.0' ]
ruby: [ 'ruby-2.6', 'ruby-2.7', 'truffleruby-19.3.0', 'jruby-9.2.9.0' ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
@@ -51,10 +51,12 @@ jobs:
- run: ruby -v
```
If a specific version is not given, it uses the latest stable release of that implementation.
For instance `truffleruby` is currently the same as `truffleruby-19.3.0`.
### Supported Version Syntax
If it's just a version number (e.g., `2.6.5`), then MRI is assumed (same as `ruby-2.6.5`).
* `engine-version` like `ruby-2.6.5` and `truffleruby-19.3.0`
* short version like `2.6`, automatically using the latest release matching that version (`2.6.5`)
* version only like `2.6.5`, assumes MRI for the engine
* engine only like `truffleruby`, uses the latest stable release of that implementation
### All Stable Versions
@@ -69,7 +71,7 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest', 'macos-latest' ]
ruby: [ '2.4.9', '2.5.7', '2.6.5', '2.7.0', 'truffleruby', 'jruby' ]
ruby: [ '2.4', '2.5', '2.6', '2.7', 'truffleruby', 'jruby' ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
Generated Vendored
+26 -8
View File
@@ -1416,17 +1416,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() {
+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() {