Introduce rebar-version (#9)

Previously (Remove redundant code) (+27 squashed commits)
Squashed commits:
[0b79c31] Rename as setup-beam
[312b42b] Simplify platform verification
[b43ca96] Prevent use of OTP- prefixed Erlang/OTP versions
[103a236] Move the promise-based approach to an async-based approach

(not testing for failure, so not guaranteeing readable/usable output either)
[1e7f631] Remove local test files
[d03e0c6] Prevent use of -otp- infixed Elixir versions
[697110e] Have versions output in action, not just in tests
[7360781] Ease test validations
[71e6999] Reinstall tests that were there before
[6602f20] Attempt at simplifying regexp matching with build listings
[09247af] Provide for an Elixir to "not OTP" fallback mechanism

(as explained by the comments)
[dfc4083] Attempt at renaming for clarity

We also get rid of return values when not reachable
We also move the `-otp-` part of the Elixir version upstream so it's easy to reason about
  (and update the tests accordingly)
[0d4eb28] Bump our dep.s

(trying to figure out why core.setFailed isn't making the action fail, as it should)
[ebf48ef] Have action fail (with an exception) when no expected version is found

(we otherwise feel that a simple warning is not enough, as it may end up hiding potential bugs)
[8478364] Adapt tests to our actual inputs
[16ea63d] Add prettier again, now sync'ed with jslint

(pass it on the code, already)
[cfc65df] Improve error messages and tests
[a017948] Test unavailable Elixir upon mix
[7f2a3e9] Test failing installations

Also output core.error when expected
[08061ca] Attempt at making shell scripts more robust
[4ee73cb] Separate test code from production code

1. inputs (for CI) are managed by code, not by .yml env. variables
2. rebar3_builds.txt added for stable repeatability
3. tests tweaked to make it easier to modify and drop dependency on production code
4. `dist` regenerated (duplicate files gone)
5. setup-elixir.js tweaked to this new reality
[d17fed4] Remove prettier from the package
[7d6f8f5] Actually break CI when we should
[b972eaf] Remove unrequired element
[0ffa28a] Ease maintenance and readability
[4690169] Fix as per broken tests
[a1371c6] Merge setup-erlang in
This commit is contained in:
Paulo F. Oliveira
2021-03-30 11:54:20 -05:00
committed by GitHub
parent 86521d7b4d
commit 89cb00455a
112 changed files with 10426 additions and 6313 deletions
+27 -16
View File
@@ -1,32 +1,43 @@
const {exec} = require('@actions/exec')
const path = require('path')
const semver = require('semver')
module.exports = {installElixir, installOTP}
/**
* Install Erlang/OTP.
*
* @param {string} osVersion
* @param {string} otpVersion
*/
async function installOTP(osVersion, otpVersion) {
await exec(path.join(__dirname, 'install-otp'), [osVersion, otpVersion])
}
/**
* Install Elixir.
*
* @param {string} version
* @param {string} otpMajor
* @param {string} elixirVersion
*/
async function installElixir(version, otpMajor) {
if (process.platform === 'linux') {
const otpString = otpMajor ? `-otp-${otpMajor}` : ''
await exec(path.join(__dirname, 'install-elixir'), [version, otpString])
}
async function installElixir(elixirVersion) {
await exec(path.join(__dirname, 'install-elixir'), [elixirVersion])
}
/**
* Install OTP.
* Install rebar3.
*
* @param {string} version
* @param {string} rebar3Version
*/
async function installOTP(version, osVersion) {
if (process.platform === 'linux') {
await exec(path.join(__dirname, 'install-otp'), [version, osVersion])
return
async function installRebar3(rebar3Version) {
await exec(path.join(__dirname, 'install-rebar3'), [rebar3Version])
}
function checkPlatform() {
if (process.platform !== 'linux') {
throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time')
}
}
throw new Error('@erlef/setup-beam only supports Ubuntu Linux at this time')
module.exports = {
installOTP: installOTP,
installElixir: installElixir,
installRebar3: installRebar3,
checkPlatform: checkPlatform,
}