mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-23 07:06:07 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 713cc2ffe3 | |||
| 8d31e4db55 | |||
| 4c52669fda | |||
| 6a5f23a6f0 | |||
| 8bfa104bdd | |||
| d85df626dd |
@@ -14,8 +14,8 @@ jobs:
|
||||
name: Expected local npm actions
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run: npm install -g npm
|
||||
@@ -34,8 +34,8 @@ jobs:
|
||||
name: Unit tests (Ubuntu)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run: npm ci
|
||||
@@ -45,8 +45,8 @@ jobs:
|
||||
name: Unit tests (Windows)
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run: npm install --production
|
||||
|
||||
@@ -21,6 +21,13 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
combo:
|
||||
- otp-version: 'master'
|
||||
elixir-version: '1.14.0'
|
||||
os: 'ubuntu-latest'
|
||||
- otp-version: 'master'
|
||||
elixir-version: '1.14.0'
|
||||
os: 'ubuntu-latest'
|
||||
version-type: 'strict'
|
||||
- otp-version: '25'
|
||||
elixir-version: '1'
|
||||
rebar3-version: '3'
|
||||
@@ -45,20 +52,10 @@ jobs:
|
||||
- otp-version: '24'
|
||||
rebar3-version: 'nightly'
|
||||
os: 'ubuntu-latest'
|
||||
- elixir-version: 'v1.0'
|
||||
otp-version: '17'
|
||||
os: 'ubuntu-18.04'
|
||||
- elixir-version: 'v1.1'
|
||||
otp-version: '18'
|
||||
os: 'ubuntu-18.04'
|
||||
- elixir-version: 'v1.2'
|
||||
otp-version: '19'
|
||||
rebar3-version: '3.10'
|
||||
os: 'ubuntu-18.04'
|
||||
- elixir-version: 'v1.4'
|
||||
otp-version: '20'
|
||||
rebar3-version: '3.6.0'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.4'
|
||||
otp-version: '20'
|
||||
rebar3-version: '3.11'
|
||||
@@ -66,7 +63,7 @@ jobs:
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
@@ -74,7 +71,7 @@ jobs:
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
@@ -82,11 +79,11 @@ jobs:
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.13.4'
|
||||
otp-version: '25.0.2'
|
||||
rebar3-version: '3.19'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
@@ -113,26 +110,32 @@ jobs:
|
||||
- elixir-version: 'master'
|
||||
otp-version: '23.1'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'master'
|
||||
- elixir-version: 'main'
|
||||
otp-version: '25'
|
||||
os: 'ubuntu-20.04'
|
||||
version-type: 'strict'
|
||||
- gleam-version: 'nightly'
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.23'
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.23.0-rc1'
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.23.0-rc1'
|
||||
otp-version: false
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.22.0' # Version with Gleam's old archive naming convention
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -194,7 +197,7 @@ jobs:
|
||||
rebar3-version: 'nightly'
|
||||
os: 'ubuntu-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -206,7 +209,7 @@ jobs:
|
||||
- run: env
|
||||
- name: List environment variables
|
||||
run: |
|
||||
echo "${{env.INSTALL_DIR_FOR_ELIXIR}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_GLEAM}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_OTP}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_REBAR3}}"
|
||||
[ -n "${INSTALL_DIR_FOR_ELIXIR}" ] && echo "${INSTALL_DIR_FOR_ELIXIR}"
|
||||
[ -n "${INSTALL_DIR_FOR_GLEAM}" ] && echo "${INSTALL_DIR_FOR_GLEAM}"
|
||||
[ -n "${INSTALL_DIR_FOR_OTP}" ] && echo "${INSTALL_DIR_FOR_OTP}"
|
||||
[ -n "${INSTALL_DIR_FOR_REBAR3}" ] && echo "${INSTALL_DIR_FOR_REBAR3}"
|
||||
|
||||
@@ -11,8 +11,8 @@ jobs:
|
||||
name: Update 3rd party licenses
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run:
|
||||
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
os: 'windows-latest'
|
||||
- elixir-version: 'v1.11'
|
||||
- elixir-version: 'v1.13'
|
||||
otp-version: '24'
|
||||
rebar3-version: '3.15'
|
||||
os: 'windows-latest'
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
rebar3-version: '3.16'
|
||||
os: 'windows-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -95,7 +95,7 @@ jobs:
|
||||
rebar3-version: 'nightly'
|
||||
os: 'windows-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -107,7 +107,8 @@ jobs:
|
||||
- run: env
|
||||
- name: List environment variables
|
||||
run: |
|
||||
echo "${{env.INSTALL_DIR_FOR_ELIXIR}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_GLEAM}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_OTP}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_REBAR3}}"
|
||||
[ -n "${INSTALL_DIR_FOR_ELIXIR}" ] && echo "${INSTALL_DIR_FOR_ELIXIR}"
|
||||
[ -n "${INSTALL_DIR_FOR_GLEAM}" ] && echo "${INSTALL_DIR_FOR_GLEAM}"
|
||||
[ -n "${INSTALL_DIR_FOR_OTP}" ] && echo "${INSTALL_DIR_FOR_OTP}"
|
||||
[ -n "${INSTALL_DIR_FOR_REBAR3}" ] && echo "${INSTALL_DIR_FOR_REBAR3}"
|
||||
shell: bash
|
||||
|
||||
+2
-2
@@ -1543,7 +1543,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
|
||||
-----
|
||||
|
||||
The following software may be included in this product: concat-map, json-stable-stringify-without-jsonify, minimist, semver-compare, text-table. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git (concat-map), git://github.com/samn/json-stable-stringify.git (json-stable-stringify-without-jsonify), git://github.com/substack/minimist.git (minimist), git://github.com/substack/semver-compare.git (semver-compare), git://github.com/substack/text-table.git (text-table). This software contains the following license and notice below:
|
||||
The following software may be included in this product: concat-map, json-stable-stringify-without-jsonify, minimist, semver-compare, text-table. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git (concat-map), git://github.com/samn/json-stable-stringify.git (json-stable-stringify-without-jsonify), git://github.com/minimistjs/minimist.git (minimist), git://github.com/substack/semver-compare.git (semver-compare), git://github.com/substack/text-table.git (text-table). This software contains the following license and notice below:
|
||||
|
||||
This software is released under the MIT license:
|
||||
|
||||
@@ -2009,7 +2009,7 @@ THE SOFTWARE.
|
||||
|
||||
-----
|
||||
|
||||
The following software may be included in this product: es-shim-unscopables. A copy of the source code may be downloaded from git+https://github.com/ljharb/es-shim-unscopables.git. This software contains the following license and notice below:
|
||||
The following software may be included in this product: es-shim-unscopables, safe-regex-test. A copy of the source code may be downloaded from git+https://github.com/ljharb/es-shim-unscopables.git (es-shim-unscopables), git+https://github.com/ljharb/safe-regex-test.git (safe-regex-test). This software contains the following license and notice below:
|
||||
|
||||
MIT License
|
||||
|
||||
|
||||
@@ -188,6 +188,14 @@ async function testElixirVersions() {
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
spec = '1.14.0'
|
||||
otpVersion = 'master'
|
||||
expected = 'v1.14.0'
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
spec = 'v1.11.0-rc.0'
|
||||
otpVersion = 'OTP-23'
|
||||
@@ -205,9 +213,9 @@ async function testElixirVersions() {
|
||||
simulateInput('version-type', 'loose')
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
spec = 'master'
|
||||
spec = 'main'
|
||||
otpVersion = '23.1'
|
||||
expected = 'master-otp-23'
|
||||
expected = 'main-otp-23'
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
|
||||
Vendored
+894
-884
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
@@ -14,4 +14,4 @@ Start-Process "${FILE_OUTPUT}" "/S /D=${ERL_ROOT}" -Wait
|
||||
Write-Output "Installed Erlang/OTP version follows"
|
||||
& "${ERL_ROOT}/bin/erl.exe" "+V" | Write-Output
|
||||
|
||||
"INSTALL_DIR_FOR_OTP=" + ${ERL_ROOT}
|
||||
"INSTALL_DIR_FOR_OTP=${ERL_ROOT}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||
|
||||
Vendored
+1
-1
@@ -17,4 +17,4 @@ tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1
|
||||
echo "Installed Erlang/OTP version follows"
|
||||
${DIR_FOR_BIN}/bin/erl -version
|
||||
|
||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}"
|
||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
||||
|
||||
Generated
+472
-270
File diff suppressed because it is too large
Load Diff
+11
-11
@@ -19,23 +19,23 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "1.9.1",
|
||||
"@actions/core": "1.10.0",
|
||||
"@actions/exec": "1.1.1",
|
||||
"semver": "7.3.6"
|
||||
"semver": "7.3.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vercel/ncc": "0.33.4",
|
||||
"eslint": "8.14.0",
|
||||
"@vercel/ncc": "0.34.0",
|
||||
"eslint": "8.25.0",
|
||||
"eslint-config-airbnb": "19.0.4",
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"eslint-plugin-jsx-a11y": "6.5.1",
|
||||
"eslint-plugin-react": "7.29.0",
|
||||
"husky": "7.0.4",
|
||||
"markdownlint": "0.25.1",
|
||||
"prettier": "2.6.2",
|
||||
"eslint-plugin-jsx-a11y": "6.6.1",
|
||||
"eslint-plugin-react": "7.31.10",
|
||||
"husky": "8.0.1",
|
||||
"markdownlint": "0.26.2",
|
||||
"prettier": "2.7.1",
|
||||
"shellcheck": "1.1.0",
|
||||
"yaml-lint": "1.3.0",
|
||||
"yarn": "1.22.18"
|
||||
"yaml-lint": "1.7.0",
|
||||
"yarn": "1.22.19"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
|
||||
+1
-1
@@ -14,4 +14,4 @@ Start-Process "${FILE_OUTPUT}" "/S /D=${ERL_ROOT}" -Wait
|
||||
Write-Output "Installed Erlang/OTP version follows"
|
||||
& "${ERL_ROOT}/bin/erl.exe" "+V" | Write-Output
|
||||
|
||||
"INSTALL_DIR_FOR_OTP=" + ${ERL_ROOT}
|
||||
"INSTALL_DIR_FOR_OTP=${ERL_ROOT}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||
|
||||
+1
-1
@@ -17,4 +17,4 @@ tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1
|
||||
echo "Installed Erlang/OTP version follows"
|
||||
${DIR_FOR_BIN}/bin/erl -version
|
||||
|
||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}"
|
||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
||||
|
||||
+48
-61
@@ -19,8 +19,8 @@ async function main() {
|
||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||
|
||||
if (otpSpec !== 'false') {
|
||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||
await installOTP(otpSpec, osVersion)
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpSpec)
|
||||
|
||||
if (elixirInstalled === true) {
|
||||
const shouldMixRebar = core.getInput('install-rebar', {
|
||||
@@ -130,19 +130,13 @@ async function maybeInstallRebar3(rebar3Spec) {
|
||||
|
||||
async function getOTPVersion(otpSpec0, osVersion) {
|
||||
const otpVersions = await getOTPVersions(osVersion)
|
||||
const otpSpec = otpSpec0.match(/^(OTP-|maint-)?([^ ]+)/)
|
||||
let otpVersion
|
||||
if (otpSpec[1] && !isStrictVersion()) {
|
||||
throw new Error(
|
||||
`Requested Erlang/OTP version (${otpSpec0}) ` +
|
||||
"should not contain 'OTP-, or maint-'",
|
||||
)
|
||||
}
|
||||
if (otpSpec) {
|
||||
otpVersion = getVersionFromSpec(
|
||||
otpSpec[2],
|
||||
Array.from(otpVersions.keys()).sort(),
|
||||
)
|
||||
let otpSpec = otpSpec0 // might be a branch (?)
|
||||
const otpVersion = getVersionFromSpec(
|
||||
otpSpec,
|
||||
Array.from(otpVersions.keys()).sort(),
|
||||
)
|
||||
if (isVersion(otpSpec0)) {
|
||||
otpSpec = `OTP-${otpSpec0}` // ... it's a version!
|
||||
}
|
||||
if (otpVersion === null) {
|
||||
throw new Error(
|
||||
@@ -154,60 +148,46 @@ async function getOTPVersion(otpSpec0, osVersion) {
|
||||
return otpVersions.get(otpVersion) // from the reference, for download
|
||||
}
|
||||
|
||||
async function getElixirVersion(exSpec0, otpVersion) {
|
||||
async function getElixirVersion(exSpec0, otpVersion0) {
|
||||
const otpVersion = otpVersion0.match(/^([^-]+-)?(.+)$/)[2]
|
||||
const otpVersionMajor = otpVersion.match(/^([^.]+).*$/)[1]
|
||||
const elixirVersions = await getElixirVersions()
|
||||
const semverVersions = Array.from(elixirVersions.keys()).sort()
|
||||
|
||||
const exSpec = exSpec0.match(/^v?(.+)(-otp-.+)/) || exSpec0.match(/^v?(.+)/)
|
||||
let elixirVersion
|
||||
if (exSpec[2] && !isStrictVersion()) {
|
||||
throw new Error(
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) ` +
|
||||
"should not contain '-otp-...'",
|
||||
)
|
||||
const exSpec = exSpec0.replace(/-otp-.*$/, '')
|
||||
const elixirVersionFromSpec = getVersionFromSpec(exSpec, semverVersions, true)
|
||||
let elixirVersionForDownload = elixirVersionFromSpec
|
||||
if (isVersion(otpVersionMajor)) {
|
||||
elixirVersionForDownload = `${elixirVersionFromSpec}-otp-${otpVersionMajor}`
|
||||
}
|
||||
if (exSpec) {
|
||||
elixirVersion = getVersionFromSpec(exSpec[1], semverVersions)
|
||||
}
|
||||
if (!exSpec || elixirVersion === null) {
|
||||
if (elixirVersionFromSpec === null) {
|
||||
throw new Error(
|
||||
`Requested Elixir version (${exSpec0}) not found in version list ` +
|
||||
"(should you be using option 'version-type': 'strict'?)",
|
||||
)
|
||||
}
|
||||
const otpMatch = otpVersion.match(/^(?:OTP-)?([^.]+)/)
|
||||
let elixirVersionWithOTP
|
||||
|
||||
if (elixirVersions.get(elixirVersion)) {
|
||||
const otpVersionMajor = otpMatch[1]
|
||||
// We try for a version like `v1.4.5-otp-20`...
|
||||
if (elixirVersions.get(elixirVersion).includes(otpMatch[1])) {
|
||||
// ... and it's available: use it!
|
||||
elixirVersionWithOTP = `${elixirVersion}-otp-${otpVersionMajor}`
|
||||
core.info(
|
||||
`Using Elixir ${elixirVersion} (built for OTP ${otpVersionMajor})`,
|
||||
)
|
||||
} else {
|
||||
// ... and it's not available: exit with exception
|
||||
throw new Error(
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) not ` +
|
||||
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?)',
|
||||
)
|
||||
}
|
||||
const elixirVersionComp = elixirVersions.get(elixirVersionFromSpec)
|
||||
if (
|
||||
(elixirVersionComp && elixirVersionComp.includes(otpVersionMajor)) ||
|
||||
!isVersion(otpVersionMajor)
|
||||
) {
|
||||
core.info(
|
||||
`Using Elixir ${elixirVersionFromSpec} (built for Erlang/OTP ${otpVersionMajor})`,
|
||||
)
|
||||
} else {
|
||||
throw new Error(
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) not ` +
|
||||
"found in version list (should you be using option 'version-type': 'strict'?)",
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion0}) not ` +
|
||||
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?)',
|
||||
)
|
||||
}
|
||||
|
||||
return maybePrependWithV(elixirVersionWithOTP, elixirVersion)
|
||||
return maybePrependWithV(elixirVersionForDownload)
|
||||
}
|
||||
|
||||
async function getGleamVersion(gleamSpec0) {
|
||||
const gleamSpec = gleamSpec0.match(/^v?(.+)/)
|
||||
const gleamSpec = gleamSpec0.match(/^v?(.+)$/)
|
||||
const gleamVersions = await getGleamVersions()
|
||||
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions)
|
||||
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions, true)
|
||||
if (gleamVersion === null) {
|
||||
throw new Error(
|
||||
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
|
||||
@@ -251,7 +231,9 @@ async function getOTPVersions(osVersion) {
|
||||
.trim()
|
||||
.split('\n')
|
||||
.forEach((line) => {
|
||||
const otpMatch = line.match(/^(OTP-|maint-)?([^ ]+)/)
|
||||
const otpMatch = line
|
||||
.match(/^([^ ]+)?( .+)/)[1]
|
||||
.match(/^([^-]+-)?(.+)$/)
|
||||
const otpVersion = otpMatch[2]
|
||||
otpVersions.set(otpVersion, otpMatch[0]) // we keep the original for later reference
|
||||
})
|
||||
@@ -268,7 +250,6 @@ async function getOTPVersions(osVersion) {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
return otpVersions
|
||||
}
|
||||
|
||||
@@ -285,7 +266,7 @@ async function getElixirVersions() {
|
||||
.forEach((line) => {
|
||||
const elixirMatch =
|
||||
line.match(/^v?(.+)-otp-([^ ]+)/) || line.match(/^v?([^ ]+)/)
|
||||
const elixirVersion = elixirMatch[1]
|
||||
const elixirVersion = maybePrependWithV(elixirMatch[1])
|
||||
const otpVersion = elixirMatch[2]
|
||||
const otpVersions = otpVersionsForElixirMap.get(elixirVersion) || []
|
||||
if (otpVersion) {
|
||||
@@ -332,7 +313,7 @@ function isStrictVersion() {
|
||||
return core.getInput('version-type', { required: false }) === 'strict'
|
||||
}
|
||||
|
||||
function getVersionFromSpec(spec, versions) {
|
||||
function getVersionFromSpec(spec, versions, maybePrependWithV0) {
|
||||
let version = null
|
||||
|
||||
if (spec.match(/rc/) || isStrictVersion()) {
|
||||
@@ -357,7 +338,11 @@ function getVersionFromSpec(spec, versions) {
|
||||
}
|
||||
}
|
||||
|
||||
return version === null || version === undefined ? null : version
|
||||
let v = version === null || version === undefined ? null : version
|
||||
if (maybePrependWithV0 && v != null) {
|
||||
v = maybePrependWithV(v)
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
function maybeCoerced(v) {
|
||||
@@ -464,15 +449,17 @@ async function get(url0, pageIdxs) {
|
||||
return ret
|
||||
}
|
||||
|
||||
function maybePrependWithV(versionToPrepend, specVersion) {
|
||||
const digitStart = /^\d+/
|
||||
let v = versionToPrepend
|
||||
if (digitStart.test(specVersion)) {
|
||||
v = `v${versionToPrepend}`
|
||||
function maybePrependWithV(v) {
|
||||
if (isVersion(v)) {
|
||||
return `v${v.replace('v', '')}`
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
function isVersion(v) {
|
||||
return /^v?\d+/.test(v)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getOTPVersion,
|
||||
getElixirVersion,
|
||||
|
||||
Reference in New Issue
Block a user