Skip to content

Commit 02a916e

Browse files
committed
Support short version syntax
1 parent 83e66a9 commit 02a916e

File tree

4 files changed

+61
-23
lines changed

4 files changed

+61
-23
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
fail-fast: false
77
matrix:
88
os: [ 'ubuntu-16.04', 'ubuntu-18.04', 'macos-latest' ]
9-
ruby: [ '2.4.9', '2.5.7', '2.6.5', '2.7.0', 'truffleruby', 'jruby' ]
9+
ruby: [ 'ruby-2.4', '2.5', 'ruby-2.6.5', '2.7.0', 'truffleruby', 'jruby' ]
1010
runs-on: ${{ matrix.os }}
1111
steps:
1212
- uses: actions/checkout@v2

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- uses: actions/checkout@v2
2727
- uses: eregon/use-ruby-action@master
2828
with:
29-
ruby-version: ruby-2.6.5
29+
ruby-version: ruby-2.6
3030
- run: ruby -v
3131
```
3232
@@ -41,7 +41,7 @@ jobs:
4141
fail-fast: false
4242
matrix:
4343
os: [ 'ubuntu-latest', 'macos-latest' ]
44-
ruby: [ 'ruby-2.6.5', 'ruby-2.7.0', 'truffleruby-19.3.0', 'jruby-9.2.9.0' ]
44+
ruby: [ 'ruby-2.6', 'ruby-2.7', 'truffleruby-19.3.0', 'jruby-9.2.9.0' ]
4545
runs-on: ${{ matrix.os }}
4646
steps:
4747
- uses: actions/checkout@v2
@@ -51,10 +51,12 @@ jobs:
5151
- run: ruby -v
5252
```
5353
54-
If a specific version is not given, it uses the latest stable release of that implementation.
55-
For instance `truffleruby` is currently the same as `truffleruby-19.3.0`.
54+
### Supported Version Syntax
5655
57-
If it's just a version number (e.g., `2.6.5`), then MRI is assumed (same as `ruby-2.6.5`).
56+
* `engine-version` like `ruby-2.6.5` and `truffleruby-19.3.0`
57+
* short version like `2.6`, automatically using the latest release matching that version (`2.6.5`)
58+
* version only like `2.6.5`, assumes MRI for the engine
59+
* engine only like `truffleruby`, uses the latest stable release of that implementation
5860

5961
### All Stable Versions
6062

@@ -69,7 +71,7 @@ jobs:
6971
fail-fast: false
7072
matrix:
7173
os: [ 'ubuntu-latest', 'macos-latest' ]
72-
ruby: [ '2.4.9', '2.5.7', '2.6.5', '2.7.0', 'truffleruby', 'jruby' ]
74+
ruby: [ '2.4', '2.5', '2.6', '2.7', 'truffleruby', 'jruby' ]
7375
runs-on: ${{ matrix.os }}
7476
steps:
7577
- uses: actions/checkout@v2

dist/index.js

Lines changed: 26 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

index.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,35 @@ async function getLatestReleaseTag() {
3737
}
3838

3939
async function getRubyEngineAndVersion(rubyVersion) {
40+
let engine, version
4041
if (rubyVersion.match(/^\d+/)) { // X.Y.Z => ruby-X.Y.Z
41-
return 'ruby-' + rubyVersion
42+
engine = 'ruby'
43+
version = rubyVersion
4244
} else if (!rubyVersion.includes('-')) { // myruby -> myruby-stableVersion
43-
const engine = rubyVersion
44-
const response = await axios.get(`${metadataURL}/versions.json`)
45-
const stableVersions = response.data[engine]
46-
const latestStableVersion = stableVersions[stableVersions.length-1]
47-
return engine + '-' + latestStableVersion
48-
} else {
49-
return rubyVersion
45+
engine = rubyVersion
46+
version = '' // Let the logic below find the version
47+
} else { // engine-X.Y.Z
48+
[engine, version] = rubyVersion.split('-', 2)
49+
}
50+
51+
const response = await axios.get(`${metadataURL}/versions.json`)
52+
const stableVersions = response.data
53+
const engineVersions = stableVersions[engine]
54+
if (!engineVersions) {
55+
throw new Error(`Unknown engine ${engine} (${rubyVersion})`)
5056
}
57+
58+
if (!engineVersions.includes(version)) {
59+
engineVersions.reverse() // inplace!
60+
let found = engineVersions.find(v => v.startsWith(version))
61+
if (found) {
62+
version = found
63+
} else {
64+
throw new Error(`Unknown version ${version} (${rubyVersion})`)
65+
}
66+
}
67+
68+
return engine + '-' + version
5169
}
5270

5371
function getVirtualEnvironmentName() {

0 commit comments

Comments
 (0)