Install OTP branches

4edd0cd · Eric Meadows-Jönsson · 2021-01-12 02:21

7 files +668 -30

Files changed

modified .github/workflows/test.yml
+2 −0
@@ -32,6 +32,8 @@ jobs:
32 32 # Branches
33 33 - otp-version: '22.0'
34 34 elixir-version: master
35 + - otp-version: 'master'
36 + elixir-version: '1.11.3'
35 37 # Pre-releases
36 38 - otp-version: '23.0'
37 39 elixir-version: '1.11.0-rc.0'
modified dist/.github/workflows/test.yml
+2 −0
@@ -32,6 +32,8 @@ jobs:
32 32 # Branches
33 33 - otp-version: '22.0'
34 34 elixir-version: master
35 + - otp-version: 'master'
36 + elixir-version: '1.11.3'
35 37 # Pre-releases
36 38 - otp-version: '23.0'
37 39 elixir-version: '1.11.0-rc.0'
modified dist/index.js
+19 −15
@@ -3314,9 +3314,10 @@ main().catch(err => {
3314 3314 async function main() {
3315 3315 checkPlatform()
3316 3316
3317 + const osVersion = getRunnerOSVersion()
3317 3318 const otpSpec = core.getInput('otp-version', {required: true})
3318 3319 const elixirSpec = core.getInput('elixir-version', {required: true})
3319 const otpVersion = await getOtpVersion(otpSpec)
3320 + const otpVersion = await getOtpVersion(otpSpec, osVersion)
3320 3321 const [elixirVersion, otpMajor] = await getElixirVersion(
3321 3322 elixirSpec,
3322 3323 otpVersion
@@ -3328,10 +3329,6 @@ async function main() {
3328 3329 let installRebar = core.getInput('install-rebar')
3329 3330 installRebar = installRebar == null ? 'true' : installRebar
3330 3331
3331 const experimentalOTP = core.getInput('experimental-otp')
3332 const osVersion =
3333 experimentalOTP === 'true' ? getRunnerOSVersion() : 'ubuntu-14.04'
3334
3335 3332 console.log(`##[group]Installing OTP ${otpVersion} - built on ${osVersion}`)
3336 3333 await installOTP(otpVersion, osVersion)
3337 3334 console.log(`##[endgroup]`)
@@ -3359,11 +3356,12 @@ function checkPlatform() {
3359 3356 )
3360 3357 }
3361 3358
3362 async function getOtpVersion(spec) {
3363 return getVersionFromSpec(spec, await getOtpVersions()) || spec
3359 +async function getOtpVersion(spec, osVersion) {
3360 + const version = getVersionFromSpec(spec, await getOtpVersions(osVersion))
3361 + return version ? `OTP-${version}` : spec
3364 3362 }
3365 3363
3366 function getRunnerOSVersion(experimentalOTP) {
3364 +function getRunnerOSVersion() {
3367 3365 const mapToUbuntuVersion = {
3368 3366 ubuntu16: 'ubuntu-16.04',
3369 3367 ubuntu18: 'ubuntu-18.04',
@@ -3385,10 +3383,10 @@ async function getElixirVersion(spec, otpVersion) {
3385 3383
3386 3384 const version = getVersionFromSpec(spec, semverVersions)
3387 3385 const gitRef = version ? `v${version}` : spec
3388 const [otpMajor] = otpVersion.match(/^\d+/)
3386 + const otpMatch = otpVersion.match(/^OTP-([\.\d]+)/)
3389 3387
3390 if (versions.get(gitRef).includes(otpMajor)) {
3391 return [gitRef, otpMajor]
3388 + if (otpMatch != null && versions.get(gitRef).includes(otpMatch[0])) {
3389 + return [gitRef, otpMatch[0]]
3392 3390 } else {
3393 3391 return [gitRef, null]
3394 3392 }
@@ -3403,17 +3401,23 @@ function getVersionFromSpec(spec, versions) {
3403 3401 }
3404 3402 }
3405 3403
3406 async function getOtpVersions() {
3404 +async function getOtpVersions(osVersion) {
3407 3405 const result = await get(
3408 'https://raw.githubusercontent.com/erlang/otp/master/otp_versions.table'
3406 + `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt`
3409 3407 )
3410 3408
3411 3409 return result
3412 3410 .trim()
3413 3411 .split('\n')
3414 3412 .map(line => {
3415 const [_, version] = line.match(/^OTP-([\.\d]+)/)
3416 return version
3413 + const match = line.match(/^OTP-([\.\d]+)/)
3414 +
3415 + if (match) {
3416 + const [_, version] = match
3417 + return version
3418 + } else {
3419 + return line
3420 + }
3417 3421 })
3418 3422 }
3419 3423
modified dist/install-otp
+1 −1
@@ -4,7 +4,7 @@ set -eo pipefail
4 4
5 5 cd $RUNNER_TEMP
6 6
7 wget -q -O otp.tar.gz https://repo.hex.pm/builds/otp/${2}/OTP-${1}.tar.gz
7 +wget -q -O otp.tar.gz https://repo.hex.pm/builds/otp/${2}/${1}.tar.gz
8 8 mkdir -p .setup-elixir/otp
9 9 tar zxf otp.tar.gz -C .setup-elixir/otp --strip-components=1
10 10 rm otp.tar.gz
modified package-lock.json
+625 −1
@@ -1,8 +1,632 @@
1 1 {
2 2 "name": "setup-elixir",
3 3 "version": "1.4.1",
4 "lockfileVersion": 1,
4 + "lockfileVersion": 2,
5 5 "requires": true,
6 + "packages": {
7 + "": {
8 + "version": "1.4.1",
9 + "license": "MIT",
10 + "dependencies": {
11 + "@actions/core": "^1.0.0",
12 + "@actions/exec": "^1.0.0",
13 + "@actions/tool-cache": "^1.1.0",
14 + "semver": "^6.3.0"
15 + },
16 + "devDependencies": {
17 + "@zeit/ncc": "^0.22.1",
18 + "husky": "^4.2.5",
19 + "prettier": "^2.0.5"
20 + }
21 + },
22 + "node_modules/@actions/core": {
23 + "version": "1.2.6",
24 + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz",
25 + "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA=="
26 + },
27 + "node_modules/@actions/exec": {
28 + "version": "1.0.4",
29 + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz",
30 + "integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==",
31 + "dependencies": {
32 + "@actions/io": "^1.0.1"
33 + }
34 + },
35 + "node_modules/@actions/exec/node_modules/@actions/io": {
36 + "version": "1.0.2",
37 + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.2.tgz",
38 + "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg=="
39 + },
40 + "node_modules/@actions/io": {
41 + "version": "1.0.0",
42 + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.0.tgz",
43 + "integrity": "sha512-ezrJSRdqtXtdx1WXlfYL85+40F7gB39jCK9P0jZVODW3W6xUYmu6ZOEc/UmmElUwhRyDRm1R4yNZu1Joq2kuQg=="
44 + },
45 + "node_modules/@actions/tool-cache": {
46 + "version": "1.1.0",
47 + "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.0.tgz",
48 + "integrity": "sha512-Oe/R1Gxv0G699OUL9ypxk9cTwHf1uXHhpcK7kpZt8d/Sbw915ktMkfxXt9+awOfLDwyl54sLi86KGCuSvnRuIQ==",
49 + "dependencies": {
50 + "@actions/core": "^1.0.0",
51 + "@actions/exec": "^1.0.0",
52 + "@actions/io": "^1.0.0",
53 + "semver": "^6.1.0",
54 + "typed-rest-client": "^1.4.0",
55 + "uuid": "^3.3.2"
56 + }
57 + },
58 + "node_modules/@actions/tool-cache/node_modules/@actions/core": {
59 + "version": "1.0.0",
60 + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.0.0.tgz",
61 + "integrity": "sha512-aMIlkx96XH4E/2YZtEOeyrYQfhlas9jIRkfGPqMwXD095Rdkzo4lB6ZmbxPQSzD+e1M+Xsm98ZhuSMYGv/AlqA=="
62 + },
63 + "node_modules/@actions/tool-cache/node_modules/@actions/exec": {
64 + "version": "1.0.0",
65 + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.0.tgz",
66 + "integrity": "sha512-nquH0+XKng+Ll7rZfCojN7NWSbnGh+ltwUJhzfbLkmOJgxocGX2/yXcZLMyT9fa7+tByEow/NSTrBExNlEj9fw=="
67 + },
68 + "node_modules/@actions/tool-cache/node_modules/semver": {
69 + "version": "6.3.0",
70 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
71 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
72 + "bin": {
73 + "semver": "bin/semver.js"
74 + }
75 + },
76 + "node_modules/@babel/code-frame": {
77 + "version": "7.8.3",
78 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
79 + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
80 + "dev": true,
81 + "dependencies": {
82 + "@babel/highlight": "^7.8.3"
83 + }
84 + },
85 + "node_modules/@babel/helper-validator-identifier": {
86 + "version": "7.9.5",
87 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
88 + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
89 + "dev": true
90 + },
91 + "node_modules/@babel/highlight": {
92 + "version": "7.9.0",
93 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
94 + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
95 + "dev": true,
96 + "dependencies": {
97 + "@babel/helper-validator-identifier": "^7.9.0",
98 + "chalk": "^2.0.0",
99 + "js-tokens": "^4.0.0"
100 + }
101 + },
102 + "node_modules/@babel/highlight/node_modules/ansi-styles": {
103 + "version": "3.2.1",
104 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
105 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
106 + "dev": true,
107 + "dependencies": {
108 + "color-convert": "^1.9.0"
109 + },
110 + "engines": {
111 + "node": ">=4"
112 + }
113 + },
114 + "node_modules/@babel/highlight/node_modules/chalk": {
115 + "version": "2.4.2",
116 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
117 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
118 + "dev": true,
119 + "dependencies": {
120 + "ansi-styles": "^3.2.1",
121 + "escape-string-regexp": "^1.0.5",
122 + "supports-color": "^5.3.0"
123 + },
124 + "engines": {
125 + "node": ">=4"
126 + }
127 + },
128 + "node_modules/@babel/highlight/node_modules/color-convert": {
129 + "version": "1.9.3",
130 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
131 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
132 + "dev": true,
133 + "dependencies": {
134 + "color-name": "1.1.3"
135 + }
136 + },
137 + "node_modules/@babel/highlight/node_modules/color-name": {
138 + "version": "1.1.3",
139 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
140 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
141 + "dev": true
142 + },
143 + "node_modules/@babel/highlight/node_modules/has-flag": {
144 + "version": "3.0.0",
145 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
146 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
147 + "dev": true,
148 + "engines": {
149 + "node": ">=4"
150 + }
151 + },
152 + "node_modules/@babel/highlight/node_modules/supports-color": {
153 + "version": "5.5.0",
154 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
155 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
156 + "dev": true,
157 + "dependencies": {
158 + "has-flag": "^3.0.0"
159 + },
160 + "engines": {
161 + "node": ">=4"
162 + }
163 + },
164 + "node_modules/@babel/runtime": {
165 + "version": "7.9.6",
166 + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz",
167 + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==",
168 + "dev": true,
169 + "dependencies": {
170 + "regenerator-runtime": "^0.13.4"
171 + }
172 + },
173 + "node_modules/@types/color-name": {
174 + "version": "1.1.1",
175 + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
176 + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
177 + "dev": true
178 + },
179 + "node_modules/@types/parse-json": {
180 + "version": "4.0.0",
181 + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
182 + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
183 + "dev": true
184 + },
185 + "node_modules/@zeit/ncc": {
186 + "version": "0.22.1",
187 + "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.1.tgz",
188 + "integrity": "sha512-Qq3bMuonkcnV/96jhy9SQYdh39NXHxNMJ1O31ZFzWG9n52fR2DLtgrNzhj/ahlEjnBziMLGVWDbaS9sf03/fEw==",
189 + "dev": true,
190 + "bin": {
191 + "ncc": "dist/ncc/cli.js"
192 + }
193 + },
194 + "node_modules/ansi-styles": {
195 + "version": "4.2.1",
196 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
197 + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
198 + "dev": true,
199 + "dependencies": {
200 + "@types/color-name": "^1.1.1",
201 + "color-convert": "^2.0.1"
202 + },
203 + "engines": {
204 + "node": ">=8"
205 + }
206 + },
207 + "node_modules/callsites": {
208 + "version": "3.1.0",
209 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
210 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
211 + "dev": true,
212 + "engines": {
213 + "node": ">=6"
214 + }
215 + },
216 + "node_modules/chalk": {
217 + "version": "4.0.0",
218 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
219 + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
220 + "dev": true,
221 + "dependencies": {
222 + "ansi-styles": "^4.1.0",
223 + "supports-color": "^7.1.0"
224 + },
225 + "engines": {
226 + "node": ">=10"
227 + }
228 + },
229 + "node_modules/ci-info": {
230 + "version": "2.0.0",
231 + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
232 + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
233 + "dev": true
234 + },
235 + "node_modules/color-convert": {
236 + "version": "2.0.1",
237 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
238 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
239 + "dev": true,
240 + "dependencies": {
241 + "color-name": "~1.1.4"
242 + },
243 + "engines": {
244 + "node": ">=7.0.0"
245 + }
246 + },
247 + "node_modules/color-name": {
248 + "version": "1.1.4",
249 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
250 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
251 + "dev": true
252 + },
253 + "node_modules/compare-versions": {
254 + "version": "3.6.0",
255 + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
256 + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",
257 + "dev": true
258 + },
259 + "node_modules/cosmiconfig": {
260 + "version": "6.0.0",
261 + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
262 + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
263 + "dev": true,
264 + "dependencies": {
265 + "@types/parse-json": "^4.0.0",
266 + "import-fresh": "^3.1.0",
267 + "parse-json": "^5.0.0",
268 + "path-type": "^4.0.0",
269 + "yaml": "^1.7.2"
270 + },
271 + "engines": {
272 + "node": ">=8"
273 + }
274 + },
275 + "node_modules/error-ex": {
276 + "version": "1.3.2",
277 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
278 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
279 + "dev": true,
280 + "dependencies": {
281 + "is-arrayish": "^0.2.1"
282 + }
283 + },
284 + "node_modules/escape-string-regexp": {
285 + "version": "1.0.5",
286 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
287 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
288 + "dev": true,
289 + "engines": {
290 + "node": ">=0.8.0"
291 + }
292 + },
293 + "node_modules/find-up": {
294 + "version": "4.1.0",
295 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
296 + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
297 + "dev": true,
298 + "dependencies": {
299 + "locate-path": "^5.0.0",
300 + "path-exists": "^4.0.0"
301 + },
302 + "engines": {
303 + "node": ">=8"
304 + }
305 + },
306 + "node_modules/find-versions": {
307 + "version": "3.2.0",
308 + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz",
309 + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==",
310 + "dev": true,
311 + "dependencies": {
312 + "semver-regex": "^2.0.0"
313 + },
314 + "engines": {
315 + "node": ">=6"
316 + }
317 + },
318 + "node_modules/has-flag": {
319 + "version": "4.0.0",
320 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
321 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
322 + "dev": true,
323 + "engines": {
324 + "node": ">=8"
325 + }
326 + },
327 + "node_modules/husky": {
328 + "version": "4.2.5",
329 + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz",
330 + "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==",
331 + "dev": true,
332 + "hasInstallScript": true,
333 + "dependencies": {
334 + "chalk": "^4.0.0",
335 + "ci-info": "^2.0.0",
336 + "compare-versions": "^3.6.0",
337 + "cosmiconfig": "^6.0.0",
338 + "find-versions": "^3.2.0",
339 + "opencollective-postinstall": "^2.0.2",
340 + "pkg-dir": "^4.2.0",
341 + "please-upgrade-node": "^3.2.0",
342 + "slash": "^3.0.0",
343 + "which-pm-runs": "^1.0.0"
344 + },
345 + "bin": {
346 + "husky-run": "bin/run.js",
347 + "husky-upgrade": "lib/upgrader/bin.js"
348 + },
349 + "engines": {
350 + "node": ">=10"
351 + }
352 + },
353 + "node_modules/import-fresh": {
354 + "version": "3.2.1",
355 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
356 + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
357 + "dev": true,
358 + "dependencies": {
359 + "parent-module": "^1.0.0",
360 + "resolve-from": "^4.0.0"
361 + },
362 + "engines": {
363 + "node": ">=6"
364 + }
365 + },
366 + "node_modules/is-arrayish": {
367 + "version": "0.2.1",
368 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
369 + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
370 + "dev": true
371 + },
372 + "node_modules/js-tokens": {
373 + "version": "4.0.0",
374 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
375 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
376 + "dev": true
377 + },
378 + "node_modules/json-parse-better-errors": {
379 + "version": "1.0.2",
380 + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
381 + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
382 + "dev": true
383 + },
384 + "node_modules/lines-and-columns": {
385 + "version": "1.1.6",
386 + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
387 + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
388 + "dev": true
389 + },
390 + "node_modules/locate-path": {
391 + "version": "5.0.0",
392 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
393 + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
394 + "dev": true,
395 + "dependencies": {
396 + "p-locate": "^4.1.0"
397 + },
398 + "engines": {
399 + "node": ">=8"
400 + }
401 + },
402 + "node_modules/opencollective-postinstall": {
403 + "version": "2.0.2",
404 + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
405 + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==",
406 + "dev": true,
407 + "bin": {
408 + "opencollective-postinstall": "index.js"
409 + }
410 + },
411 + "node_modules/p-limit": {
412 + "version": "2.3.0",
413 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
414 + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
415 + "dev": true,
416 + "dependencies": {
417 + "p-try": "^2.0.0"
418 + },
419 + "engines": {
420 + "node": ">=6"
421 + }
422 + },
423 + "node_modules/p-locate": {
424 + "version": "4.1.0",
425 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
426 + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
427 + "dev": true,
428 + "dependencies": {
429 + "p-limit": "^2.2.0"
430 + },
431 + "engines": {
432 + "node": ">=8"
433 + }
434 + },
435 + "node_modules/p-try": {
436 + "version": "2.2.0",
437 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
438 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
439 + "dev": true,
440 + "engines": {
441 + "node": ">=6"
442 + }
443 + },
444 + "node_modules/parent-module": {
445 + "version": "1.0.1",
446 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
447 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
448 + "dev": true,
449 + "dependencies": {
450 + "callsites": "^3.0.0"
451 + },
452 + "engines": {
453 + "node": ">=6"
454 + }
455 + },
456 + "node_modules/parse-json": {
457 + "version": "5.0.0",
458 + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
459 + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
460 + "dev": true,
461 + "dependencies": {
462 + "@babel/code-frame": "^7.0.0",
463 + "error-ex": "^1.3.1",
464 + "json-parse-better-errors": "^1.0.1",
465 + "lines-and-columns": "^1.1.6"
466 + },
467 + "engines": {
468 + "node": ">=8"
469 + }
470 + },
471 + "node_modules/path-exists": {
472 + "version": "4.0.0",
473 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
474 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
475 + "dev": true,
476 + "engines": {
477 + "node": ">=8"
478 + }
479 + },
480 + "node_modules/path-type": {
481 + "version": "4.0.0",
482 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
483 + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
484 + "dev": true,
485 + "engines": {
486 + "node": ">=8"
487 + }
488 + },
489 + "node_modules/pkg-dir": {
490 + "version": "4.2.0",
491 + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
492 + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
493 + "dev": true,
494 + "dependencies": {
495 + "find-up": "^4.0.0"
496 + },
497 + "engines": {
498 + "node": ">=8"
499 + }
500 + },
501 + "node_modules/please-upgrade-node": {
502 + "version": "3.2.0",
503 + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
504 + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
505 + "dev": true,
506 + "dependencies": {
507 + "semver-compare": "^1.0.0"
508 + }
509 + },
510 + "node_modules/prettier": {
511 + "version": "2.0.5",
512 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz",
513 + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==",
514 + "dev": true,
515 + "bin": {
516 + "prettier": "bin-prettier.js"
517 + },
518 + "engines": {
519 + "node": ">=10.13.0"
520 + }
521 + },
522 + "node_modules/regenerator-runtime": {
523 + "version": "0.13.5",
524 + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
525 + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
526 + "dev": true
527 + },
528 + "node_modules/resolve-from": {
529 + "version": "4.0.0",
530 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
531 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
532 + "dev": true,
533 + "engines": {
534 + "node": ">=4"
535 + }
536 + },
537 + "node_modules/semver": {
538 + "version": "6.3.0",
539 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
540 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
541 + "bin": {
542 + "semver": "bin/semver.js"
543 + }
544 + },
545 + "node_modules/semver-compare": {
546 + "version": "1.0.0",
547 + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
548 + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
549 + "dev": true
550 + },
551 + "node_modules/semver-regex": {
552 + "version": "2.0.0",
553 + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz",
554 + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==",
555 + "dev": true,
556 + "engines": {
557 + "node": ">=6"
558 + }
559 + },
560 + "node_modules/slash": {
561 + "version": "3.0.0",
562 + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
563 + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
564 + "dev": true,
565 + "engines": {
566 + "node": ">=8"
567 + }
568 + },
569 + "node_modules/supports-color": {
570 + "version": "7.1.0",
571 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
572 + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
573 + "dev": true,
574 + "dependencies": {
575 + "has-flag": "^4.0.0"
576 + },
577 + "engines": {
578 + "node": ">=8"
579 + }
580 + },
581 + "node_modules/tunnel": {
582 + "version": "0.0.4",
583 + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz",
584 + "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=",
585 + "engines": {
586 + "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
587 + }
588 + },
589 + "node_modules/typed-rest-client": {
590 + "version": "1.5.0",
591 + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",
592 + "integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==",
593 + "dependencies": {
594 + "tunnel": "0.0.4",
595 + "underscore": "1.8.3"
596 + }
597 + },
598 + "node_modules/underscore": {
599 + "version": "1.8.3",
600 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
601 + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
602 + },
603 + "node_modules/uuid": {
604 + "version": "3.3.3",
605 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
606 + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
607 + "bin": {
608 + "uuid": "bin/uuid"
609 + }
610 + },
611 + "node_modules/which-pm-runs": {
612 + "version": "1.0.0",
613 + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
614 + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=",
615 + "dev": true
616 + },
617 + "node_modules/yaml": {
618 + "version": "1.9.2",
619 + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz",
620 + "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==",
621 + "dev": true,
622 + "dependencies": {
623 + "@babel/runtime": "^7.9.2"
624 + },
625 + "engines": {
626 + "node": ">= 6"
627 + }
628 + }
629 + },
6 630 "dependencies": {
7 631 "@actions/core": {
8 632 "version": "1.2.6",
modified src/install-otp
+1 −1
@@ -4,7 +4,7 @@ set -eo pipefail
4 4
5 5 cd $RUNNER_TEMP
6 6
7 wget -q -O otp.tar.gz https://repo.hex.pm/builds/otp/${2}/OTP-${1}.tar.gz
7 +wget -q -O otp.tar.gz https://repo.hex.pm/builds/otp/${2}/${1}.tar.gz
8 8 mkdir -p .setup-elixir/otp
9 9 tar zxf otp.tar.gz -C .setup-elixir/otp --strip-components=1
10 10 rm otp.tar.gz
modified src/setup-elixir.js
+18 −12
@@ -16,9 +16,10 @@ main().catch(err => {
16 16 async function main() {
17 17 checkPlatform()
18 18
19 + const osVersion = getRunnerOSVersion()
19 20 const otpSpec = core.getInput('otp-version', {required: true})
20 21 const elixirSpec = core.getInput('elixir-version', {required: true})
21 const otpVersion = await getOtpVersion(otpSpec)
22 + const otpVersion = await getOtpVersion(otpSpec, osVersion)
22 23 const [elixirVersion, otpMajor] = await getElixirVersion(
23 24 elixirSpec,
24 25 otpVersion
@@ -30,8 +31,6 @@ async function main() {
30 31 let installRebar = core.getInput('install-rebar')
31 32 installRebar = installRebar == null ? 'true' : installRebar
32 33
33 const osVersion = getRunnerOSVersion()
34
35 34 console.log(`##[group]Installing OTP ${otpVersion} - built on ${osVersion}`)
36 35 await installOTP(otpVersion, osVersion)
37 36 console.log(`##[endgroup]`)
@@ -59,8 +58,9 @@ function checkPlatform() {
59 58 )
60 59 }
61 60
62 async function getOtpVersion(spec) {
63 return getVersionFromSpec(spec, await getOtpVersions()) || spec
61 +async function getOtpVersion(spec, osVersion) {
62 + const version = getVersionFromSpec(spec, await getOtpVersions(osVersion))
63 + return version ? `OTP-${version}` : spec
64 64 }
65 65
66 66 function getRunnerOSVersion() {
@@ -85,10 +85,10 @@ async function getElixirVersion(spec, otpVersion) {
85 85
86 86 const version = getVersionFromSpec(spec, semverVersions)
87 87 const gitRef = version ? `v${version}` : spec
88 const [otpMajor] = otpVersion.match(/^\d+/)
88 + const otpMatch = otpVersion.match(/^OTP-([\.\d]+)/)
89 89
90 if (versions.get(gitRef).includes(otpMajor)) {
91 return [gitRef, otpMajor]
90 + if (otpMatch != null && versions.get(gitRef).includes(otpMatch[0])) {
91 + return [gitRef, otpMatch[0]]
92 92 } else {
93 93 return [gitRef, null]
94 94 }
@@ -103,17 +103,23 @@ function getVersionFromSpec(spec, versions) {
103 103 }
104 104 }
105 105
106 async function getOtpVersions() {
106 +async function getOtpVersions(osVersion) {
107 107 const result = await get(
108 'https://raw.githubusercontent.com/erlang/otp/master/otp_versions.table'
108 + `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt`
109 109 )
110 110
111 111 return result
112 112 .trim()
113 113 .split('\n')
114 114 .map(line => {
115 const [_, version] = line.match(/^OTP-([\.\d]+)/)
116 return version
115 + const match = line.match(/^OTP-([\.\d]+)/)
116 +
117 + if (match) {
118 + const [_, version] = match
119 + return version
120 + } else {
121 + return line
122 + }
117 123 })
118 124 }
119 125

Parents: 3622b49