mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-24 07:36:08 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b9cac4c04 | |||
| 6c8deb6007 | |||
| 98ca4dce66 | |||
| b8913643d6 | |||
| cf854bf149 | |||
| 4a641b1000 | |||
| 07193a0ba2 | |||
| 4c35984bbc | |||
| b60baf4753 | |||
| 213ca2eceb | |||
| bc84950393 | |||
| 980f47ea52 | |||
| 4678b57fab |
@@ -7,14 +7,35 @@ env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
jobs:
|
||||
version:
|
||||
name: Version with commit unique id
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Version it!
|
||||
run: |
|
||||
# We expect a string such as const setupBeamVersion = 'undefined' in the code
|
||||
SHA=$(git rev-parse --short HEAD)
|
||||
sed -i'.bak' \
|
||||
-e "s/const setupBeamVersion = '.*'/const setupBeamVersion = '${SHA}'/g" \
|
||||
src/setup-beam.js
|
||||
npm run build-dist
|
||||
git config user.name "GitHub Actions"
|
||||
git config user.email "actions@user.noreply.github.com"
|
||||
git add src/setup-beam.js
|
||||
git add dist/index.js
|
||||
git commit -m "Automation: update setup-beam version output to ${SHA}"
|
||||
git push origin main
|
||||
check_integrity:
|
||||
name: Expected local npm actions
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref != 'refs/heads/main'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '16'
|
||||
node-version: '20'
|
||||
- run: npm run build-dist
|
||||
- name: Check if build left artifacts
|
||||
run: git diff --exit-code --ignore-space-at-eol
|
||||
@@ -23,10 +44,10 @@ jobs:
|
||||
name: Unit tests (Ubuntu)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '16'
|
||||
node-version: '20'
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
- name: .tool-versions test
|
||||
@@ -40,9 +61,9 @@ jobs:
|
||||
name: Unit tests (Windows)
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '16'
|
||||
node-version: '20'
|
||||
- run: npm install --production
|
||||
- run: npm test
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
install-rebar: [true, false]
|
||||
install-hex: [true, false]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
os: 'ubuntu-latest'
|
||||
version-type: 'strict'
|
||||
- otp-version: '25.2'
|
||||
elixir-version: '1.14.3'
|
||||
elixir-version: '1.14.2'
|
||||
os: 'ubuntu-latest'
|
||||
- otp-version: '25.2'
|
||||
elixir-version: '1.14.3'
|
||||
@@ -66,14 +66,6 @@ jobs:
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
@@ -86,18 +78,10 @@ jobs:
|
||||
otp-version: '25.0.2'
|
||||
rebar3-version: '3.19'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.12'
|
||||
otp-version: '24'
|
||||
rebar3-version: '3.15'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.13.4'
|
||||
otp-version: '25.0.2'
|
||||
rebar3-version: '3.19'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.11.0'
|
||||
otp-version: '22.3.4.2'
|
||||
os: 'ubuntu-20.04'
|
||||
@@ -108,11 +92,11 @@ jobs:
|
||||
version-type: 'strict'
|
||||
- elixir-version: 'main'
|
||||
otp-version: '23.1'
|
||||
os: 'ubuntu-20.04'
|
||||
os: 'ubuntu-20.04'
|
||||
version-type: 'strict'
|
||||
- elixir-version: 'main'
|
||||
otp-version: '25'
|
||||
os: 'ubuntu-20.04'
|
||||
os: 'ubuntu-20.04'
|
||||
version-type: 'strict'
|
||||
- gleam-version: '0.23'
|
||||
otp-version: '24'
|
||||
@@ -126,7 +110,7 @@ jobs:
|
||||
otp-version: false
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.22.0' # Version with Gleam's old archive naming convention
|
||||
- gleam-version: '0.22.0' # Version with Gleam's old archive naming convention
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
@@ -136,7 +120,7 @@ jobs:
|
||||
escript_script: 'protoc-gen-elixir --version'
|
||||
os: 'ubuntu-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -203,7 +187,7 @@ jobs:
|
||||
rebar3-version: 'nightly'
|
||||
os: 'ubuntu-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -213,9 +197,9 @@ jobs:
|
||||
gleam-version: ${{matrix.combo.gleam-version}}
|
||||
rebar3-version: ${{matrix.combo.rebar3-version}}
|
||||
- run: env
|
||||
- name: List environment variables
|
||||
- name: Check environment variables
|
||||
run: |
|
||||
[ -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}"
|
||||
${INSTALL_DIR_FOR_ELIXIR}/elixir --version
|
||||
${INSTALL_DIR_FOR_GLEAM}/gleam --version
|
||||
${INSTALL_DIR_FOR_OTP}/erl -version
|
||||
${INSTALL_DIR_FOR_REBAR3}/rebar3 version
|
||||
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
name: Update 3rd party licenses
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- run:
|
||||
./.github/workflows/update_3rd_party_licenses.sh
|
||||
env:
|
||||
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
escript_script: 'protoc-gen-elixir --version'
|
||||
os: 'windows-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -125,7 +125,7 @@ jobs:
|
||||
rebar3-version: 'nightly'
|
||||
os: 'windows-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -135,10 +135,10 @@ jobs:
|
||||
gleam-version: ${{matrix.combo.gleam-version}}
|
||||
rebar3-version: ${{matrix.combo.rebar3-version}}
|
||||
- run: env
|
||||
- name: List environment variables
|
||||
- name: Check environment variables
|
||||
run: |
|
||||
[ -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}"
|
||||
${INSTALL_DIR_FOR_ELIXIR}/elixir --version
|
||||
${INSTALL_DIR_FOR_GLEAM}/gleam --version
|
||||
${INSTALL_DIR_FOR_OTP}/erl -version
|
||||
${INSTALL_DIR_FOR_REBAR3}/rebar3 version
|
||||
shell: bash
|
||||
|
||||
@@ -83,11 +83,26 @@ jobs:
|
||||
env:
|
||||
ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
...
|
||||
```
|
||||
|
||||
### Outputs
|
||||
|
||||
The action provides the following outputs:
|
||||
|
||||
| Output | Content
|
||||
|- |-
|
||||
| otp-version | The Erlang version, e.g. `OTP-26.0`
|
||||
| elixir-version | The Elixir version, e.g. `v1.14-otp-26`
|
||||
| gleam-version | The Gleam version, e.g. `v0.23.0`
|
||||
| rebar3-version | The `rebar3` version, e.g. `3.18.0`
|
||||
| setup-beam-version | The commit unique id of the executed action version, e.g. `a34c98f`
|
||||
|
||||
accessible as `${{steps.<setup-beam-step-id>.outputs.<Output>}}`,
|
||||
e.g. `${{steps.setup-beam.outputs.erlang-version}}`
|
||||
|
||||
### Version file
|
||||
|
||||
A version file is specified via input `version-file` (e.g.`.tool-versions`). This
|
||||
@@ -128,7 +143,7 @@ jobs:
|
||||
otp: ['20.3', '21.3', '22.2']
|
||||
elixir: ['1.8.2', '1.9.4']
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: ${{matrix.otp}}
|
||||
@@ -152,7 +167,7 @@ jobs:
|
||||
otp: ['20.3', '21.3', '22.2']
|
||||
rebar3: ['3.14.1', '3.14.3']
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: ${{matrix.otp}}
|
||||
@@ -170,7 +185,7 @@ jobs:
|
||||
test:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '24'
|
||||
@@ -188,7 +203,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '24'
|
||||
@@ -206,7 +221,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: false
|
||||
@@ -230,7 +245,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '25'
|
||||
@@ -248,7 +263,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '25'
|
||||
|
||||
+3
-1
@@ -58,6 +58,8 @@ outputs:
|
||||
description: Exact version of Gleam that was installed
|
||||
rebar3-version:
|
||||
description: Exact version of rebar3 that was installed
|
||||
setup-beam-version:
|
||||
description: The commit unique id of the execution action version
|
||||
runs:
|
||||
using: node16
|
||||
using: node20
|
||||
main: dist/index.js
|
||||
|
||||
Vendored
-62
@@ -1,62 +0,0 @@
|
||||
{
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "elixir-mixCompileError",
|
||||
"severity": "error",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^\\*\\* \\((\\w+)\\) (.*):(\\d+): (.*)$",
|
||||
"file": 2,
|
||||
"line": 3,
|
||||
"message": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"owner": "elixir-mixCompileWarning",
|
||||
"severity": "warning",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^warning: (.*)$",
|
||||
"message": 1
|
||||
},
|
||||
{
|
||||
"regexp": "^ (.*):(\\d+).*$",
|
||||
"file": 1,
|
||||
"line": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"owner": "elixir-mixTestFailure",
|
||||
"severity": "error",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^\\s*\\d+\\) (.*)$",
|
||||
"message": 1
|
||||
},
|
||||
{
|
||||
"regexp": "^\\s*(.*):(\\d+)$",
|
||||
"file": 1,
|
||||
"line": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"owner": "elixir-credoOutputDefault",
|
||||
"severity": "warning",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^\u2503\\s\\[\\w\\]\\s[\u2191|\u2197|\u2192|\u2198|\u2193]\\s(.*)$",
|
||||
"message": 1
|
||||
},
|
||||
{
|
||||
"regexp": "^\u2503\\s{7}(.*):(\\d+):(\\d+)\\s.*$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+25
-10
@@ -6161,7 +6161,7 @@ class Range {
|
||||
this.set = this.raw
|
||||
.split('||')
|
||||
// map the range to a 2d array of comparators
|
||||
.map(r => this.parseRange(r))
|
||||
.map(r => this.parseRange(r.trim()))
|
||||
// throw out any comparator lists that are empty
|
||||
// this generally means that it was not a valid range, which is allowed
|
||||
// in loose mode, but will still throw if the WHOLE range is invalid.
|
||||
@@ -7633,7 +7633,11 @@ module.exports = parseOptions
|
||||
/***/ 9523:
|
||||
/***/ ((module, exports, __nccwpck_require__) => {
|
||||
|
||||
const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH } = __nccwpck_require__(2293)
|
||||
const {
|
||||
MAX_SAFE_COMPONENT_LENGTH,
|
||||
MAX_SAFE_BUILD_LENGTH,
|
||||
MAX_LENGTH,
|
||||
} = __nccwpck_require__(2293)
|
||||
const debug = __nccwpck_require__(427)
|
||||
exports = module.exports = {}
|
||||
|
||||
@@ -7654,7 +7658,7 @@ const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
|
||||
// all input should have extra whitespace removed.
|
||||
const safeRegexReplacements = [
|
||||
['\\s', 1],
|
||||
['\\d', MAX_SAFE_COMPONENT_LENGTH],
|
||||
['\\d', MAX_LENGTH],
|
||||
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
||||
]
|
||||
|
||||
@@ -9868,6 +9872,10 @@ async function main() {
|
||||
|
||||
await maybeInstallGleam(gleamSpec)
|
||||
await maybeInstallRebar3(rebar3Spec)
|
||||
|
||||
// undefined is replaced by a function, post- main branch merge
|
||||
const setupBeamVersion = '6c8deb6'
|
||||
core.setOutput('setup-beam-version', setupBeamVersion)
|
||||
}
|
||||
|
||||
async function installOTP(otpSpec, osVersion) {
|
||||
@@ -10216,7 +10224,7 @@ function getVersionFromSpec(spec0, versions0) {
|
||||
const rangeMax = semver.maxSatisfying(versions, rangeForMax)
|
||||
let version = null
|
||||
|
||||
if (isStrictVersion() || isRC(spec0)) {
|
||||
if (isStrictVersion() || isRC(spec0) || isKnownBranch(spec0)) {
|
||||
if (versions0[spec]) {
|
||||
// If `version-type: strict` or version is RC, we obtain it directly
|
||||
version = versions0[spec]
|
||||
@@ -10288,6 +10296,10 @@ function isRC(ver) {
|
||||
return ver.match(xyzAbcVersion('^', '(?:-rc\\.?\\d+)'))
|
||||
}
|
||||
|
||||
function isKnownBranch(ver) {
|
||||
return ['main', 'master', 'maint'].includes(ver)
|
||||
}
|
||||
|
||||
function getRunnerOSVersion() {
|
||||
const ImageOSToContainer = {
|
||||
ubuntu18: 'ubuntu-18.04',
|
||||
@@ -10711,16 +10723,18 @@ async function install(toolName, opts) {
|
||||
postExtract: async (cachePath) => {
|
||||
const bindir = path.join(cachePath, 'bin')
|
||||
const oldPath = path.join(cachePath, 'rebar3')
|
||||
const newPath = path.join(bindir, 'rebar3')
|
||||
fs.mkdirSync(bindir)
|
||||
fs.chmodSync(oldPath, 0o755)
|
||||
fs.renameSync(oldPath, newPath)
|
||||
fs.chmodSync(newPath, 0o755)
|
||||
|
||||
const ps1Filename = path.join(bindir, 'rebar3.ps1')
|
||||
fs.writeFileSync(ps1Filename, `& escript.exe ${oldPath} \${args}`)
|
||||
fs.writeFileSync(ps1Filename, `& escript.exe ${newPath} \${args}`)
|
||||
|
||||
const cmdFilename = path.join(bindir, 'rebar3.cmd')
|
||||
fs.writeFileSync(
|
||||
cmdFilename,
|
||||
`@echo off\r\nescript.exe ${oldPath} %*`,
|
||||
`@echo off\r\nescript.exe ${newPath} %*`,
|
||||
)
|
||||
},
|
||||
reportVersion: () => {
|
||||
@@ -10764,11 +10778,12 @@ async function installTool(opts) {
|
||||
await platformOpts.postExtract(cachePath)
|
||||
|
||||
core.debug(`Adding ${cachePath}'s bin to system path`)
|
||||
core.addPath(path.join(cachePath, 'bin'))
|
||||
const catchPathBin = path.join(cachePath, 'bin')
|
||||
core.addPath(catchPathBin)
|
||||
|
||||
const installDirForVarName = `INSTALL_DIR_FOR_${toolName}`.toUpperCase()
|
||||
core.debug(`Exporting ${installDirForVarName} as ${cachePath}`)
|
||||
core.exportVariable(installDirForVarName, cachePath)
|
||||
core.debug(`Exporting ${installDirForVarName} as ${catchPathBin}`)
|
||||
core.exportVariable(installDirForVarName, catchPathBin)
|
||||
|
||||
core.info(`Installed ${installOpts.tool} version`)
|
||||
const [cmd, args] = platformOpts.reportVersion()
|
||||
|
||||
Vendored
-37
@@ -1,37 +0,0 @@
|
||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
||||
|
||||
$ErrorActionPreference="Stop"
|
||||
|
||||
Set-Location ${Env:RUNNER_TEMP}
|
||||
|
||||
$FILE_OUTPUT="gleam.zip"
|
||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
||||
|
||||
function Version-Greater-Than([string]${THIS_ONE}, [string]${REFERENCE}) {
|
||||
$THIS_ONE=$THIS_ONE.replace('v', '')
|
||||
$THIS_ONE=$THIS_ONE.replace('rc', '')
|
||||
$THIS_ONE=$THIS_ONE.replace('-', '')
|
||||
return [version]${THIS_ONE} -gt [version]${REFERENCE}
|
||||
}
|
||||
|
||||
function Uses-LLVM-Triplets([string]${THIS_VSN}) {
|
||||
return "${THIS_VSN}" -eq "nightly" -or (Version-Greater-Than "${THIS_VSN}" "0.22.1")
|
||||
}
|
||||
|
||||
if (Uses-LLVM-Triplets "$VSN") {
|
||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||
} else {
|
||||
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
|
||||
}
|
||||
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||
$ProgressPreference="Continue"
|
||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
Expand-Archive -DestinationPath "${DIR_FOR_BIN}/bin" -Path "${FILE_OUTPUT}"
|
||||
$ProgressPreference="Continue"
|
||||
Write-Output "Installed Gleam version follows"
|
||||
& "${DIR_FOR_BIN}/bin/gleam" "--version" | Write-Output
|
||||
|
||||
"INSTALL_DIR_FOR_GLEAM=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||
Vendored
-35
@@ -1,35 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
cd "${RUNNER_TEMP}"
|
||||
|
||||
VSN="$1"
|
||||
FILE_OUTPUT=gleam.tar.gz
|
||||
DIR_FOR_BIN=.setup-beam/gleam
|
||||
|
||||
version_gt() {
|
||||
REFERENCE=$1
|
||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$REFERENCE"
|
||||
}
|
||||
|
||||
uses_llvm_triplets() {
|
||||
local VERSION="$1"
|
||||
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||
}
|
||||
|
||||
if uses_llvm_triplets "$VSN"
|
||||
then
|
||||
FILE_INPUT="gleam-${VSN}-x86_64-unknown-linux-musl.tar.gz"
|
||||
else
|
||||
FILE_INPUT="gleam-${VSN}-linux-amd64.tar.gz"
|
||||
fi
|
||||
|
||||
wget -q -O "${FILE_OUTPUT}" "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}"
|
||||
mkdir -p "${DIR_FOR_BIN}/bin"
|
||||
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}/bin"
|
||||
|
||||
echo "Installed Gleam version follows"
|
||||
${DIR_FOR_BIN}/bin/gleam --version
|
||||
|
||||
echo "INSTALL_DIR_FOR_GLEAM=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
||||
Vendored
-32
@@ -1,32 +0,0 @@
|
||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
||||
|
||||
$ErrorActionPreference="Stop"
|
||||
|
||||
Set-Location ${Env:RUNNER_TEMP}
|
||||
|
||||
$FILE_INPUT="rebar3"
|
||||
$FILE_OUTPUT="rebar3"
|
||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
$REBAR3_TARGET="https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
||||
$REBAR3_NIGHTLY=""
|
||||
If ( ${VSN} -eq "nightly" )
|
||||
{
|
||||
$REBAR3_TARGET="https://s3.amazonaws.com/rebar3-nightly/rebar3"
|
||||
$REBAR3_NIGHTLY=" (from nightly build)"
|
||||
}
|
||||
Invoke-WebRequest "${REBAR3_TARGET}" -OutFile "${FILE_OUTPUT}"
|
||||
$ProgressPreference="Continue"
|
||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||
Write-Output "@echo off`r`nescript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} %*" | Out-File -FilePath "${FILE_OUTPUT_CMD}" -Encoding utf8 -Append
|
||||
Move-Item "${FILE_OUTPUT_PS1}" "${DIR_FOR_BIN}/bin"
|
||||
Move-Item "${FILE_OUTPUT_CMD}" "${DIR_FOR_BIN}/bin"
|
||||
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
||||
& "${DIR_FOR_BIN}/bin/rebar3.cmd" "version" | Write-Output
|
||||
|
||||
"INSTALL_DIR_FOR_REBAR3=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||
Vendored
-25
@@ -1,25 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
cd "${RUNNER_TEMP}"
|
||||
|
||||
VSN=${1}
|
||||
FILE_INPUT=rebar3
|
||||
FILE_OUTPUT=rebar3
|
||||
DIR_FOR_BIN=.setup-beam/rebar3
|
||||
|
||||
REBAR3_TARGET="https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
||||
REBAR3_NIGHTLY=""
|
||||
if [ "${VSN}" == "nightly" ]; then
|
||||
REBAR3_TARGET="https://s3.amazonaws.com/rebar3-nightly/rebar3"
|
||||
REBAR3_NIGHTLY=" (from nightly build)"
|
||||
fi
|
||||
wget -q -O "${FILE_OUTPUT}" "${REBAR3_TARGET}"
|
||||
mkdir -p "${DIR_FOR_BIN}/bin"
|
||||
chmod +x "${FILE_OUTPUT}"
|
||||
mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||
echo "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
||||
${DIR_FOR_BIN}/bin/rebar3 version
|
||||
|
||||
echo "INSTALL_DIR_FOR_REBAR3=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
||||
Generated
+5
-5
@@ -11,7 +11,7 @@
|
||||
"@actions/exec": "1.1.1",
|
||||
"@actions/http-client": "2.1.0",
|
||||
"@actions/tool-cache": "2.0.1",
|
||||
"semver": "7.5.3"
|
||||
"semver": "7.5.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vercel/ncc": "0.36.1",
|
||||
@@ -23,7 +23,7 @@
|
||||
"yarn": "1.22.19"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=20"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
@@ -2290,9 +2290,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.5.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
|
||||
"integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
|
||||
+3
-3
@@ -11,14 +11,14 @@
|
||||
"shellcheck": "shellcheck .github/workflows/*.sh",
|
||||
"test": "node test/setup-beam.test.js",
|
||||
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml",
|
||||
"build-dist": "npm install && npm run build && npm run format && npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint"
|
||||
"build-dist": "rm -rf ./dist && npm install && npm run build && npm run format && npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "1.10.0",
|
||||
"@actions/exec": "1.1.1",
|
||||
"@actions/http-client": "2.1.0",
|
||||
"@actions/tool-cache": "2.0.1",
|
||||
"semver": "7.5.3"
|
||||
"semver": "7.5.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vercel/ncc": "0.36.1",
|
||||
@@ -30,6 +30,6 @@
|
||||
"yarn": "1.22.19"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=20"
|
||||
}
|
||||
}
|
||||
|
||||
+18
-7
@@ -47,6 +47,10 @@ async function main() {
|
||||
|
||||
await maybeInstallGleam(gleamSpec)
|
||||
await maybeInstallRebar3(rebar3Spec)
|
||||
|
||||
// undefined is replaced by a function, post- main branch merge
|
||||
const setupBeamVersion = '6c8deb6'
|
||||
core.setOutput('setup-beam-version', setupBeamVersion)
|
||||
}
|
||||
|
||||
async function installOTP(otpSpec, osVersion) {
|
||||
@@ -400,7 +404,7 @@ function getVersionFromSpec(spec0, versions0) {
|
||||
const rangeMax = semver.maxSatisfying(versions, rangeForMax)
|
||||
let version = null
|
||||
|
||||
if (isStrictVersion() || isRC(spec0)) {
|
||||
if (isStrictVersion() || isRC(spec0) || isKnownBranch(spec0)) {
|
||||
if (versions0[spec]) {
|
||||
// If `version-type: strict` or version is RC, we obtain it directly
|
||||
version = versions0[spec]
|
||||
@@ -472,6 +476,10 @@ function isRC(ver) {
|
||||
return ver.match(xyzAbcVersion('^', '(?:-rc\\.?\\d+)'))
|
||||
}
|
||||
|
||||
function isKnownBranch(ver) {
|
||||
return ['main', 'master', 'maint'].includes(ver)
|
||||
}
|
||||
|
||||
function getRunnerOSVersion() {
|
||||
const ImageOSToContainer = {
|
||||
ubuntu18: 'ubuntu-18.04',
|
||||
@@ -895,16 +903,18 @@ async function install(toolName, opts) {
|
||||
postExtract: async (cachePath) => {
|
||||
const bindir = path.join(cachePath, 'bin')
|
||||
const oldPath = path.join(cachePath, 'rebar3')
|
||||
const newPath = path.join(bindir, 'rebar3')
|
||||
fs.mkdirSync(bindir)
|
||||
fs.chmodSync(oldPath, 0o755)
|
||||
fs.renameSync(oldPath, newPath)
|
||||
fs.chmodSync(newPath, 0o755)
|
||||
|
||||
const ps1Filename = path.join(bindir, 'rebar3.ps1')
|
||||
fs.writeFileSync(ps1Filename, `& escript.exe ${oldPath} \${args}`)
|
||||
fs.writeFileSync(ps1Filename, `& escript.exe ${newPath} \${args}`)
|
||||
|
||||
const cmdFilename = path.join(bindir, 'rebar3.cmd')
|
||||
fs.writeFileSync(
|
||||
cmdFilename,
|
||||
`@echo off\r\nescript.exe ${oldPath} %*`,
|
||||
`@echo off\r\nescript.exe ${newPath} %*`,
|
||||
)
|
||||
},
|
||||
reportVersion: () => {
|
||||
@@ -948,11 +958,12 @@ async function installTool(opts) {
|
||||
await platformOpts.postExtract(cachePath)
|
||||
|
||||
core.debug(`Adding ${cachePath}'s bin to system path`)
|
||||
core.addPath(path.join(cachePath, 'bin'))
|
||||
const catchPathBin = path.join(cachePath, 'bin')
|
||||
core.addPath(catchPathBin)
|
||||
|
||||
const installDirForVarName = `INSTALL_DIR_FOR_${toolName}`.toUpperCase()
|
||||
core.debug(`Exporting ${installDirForVarName} as ${cachePath}`)
|
||||
core.exportVariable(installDirForVarName, cachePath)
|
||||
core.debug(`Exporting ${installDirForVarName} as ${catchPathBin}`)
|
||||
core.exportVariable(installDirForVarName, catchPathBin)
|
||||
|
||||
core.info(`Installed ${installOpts.tool} version`)
|
||||
const [cmd, args] = platformOpts.reportVersion()
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.0.0
|
||||
- uses: erlef/setup-beam@v1.9.0
|
||||
- uses: actions/checkout@v4
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: "23.2"
|
||||
gleam-version: "0.23.0-rc1"
|
||||
|
||||
@@ -182,6 +182,18 @@ async function testOTPVersions() {
|
||||
expected = 'OTP-20.0.5'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = 'maint'
|
||||
osVersion = 'ubuntu-22.04'
|
||||
expected = 'maint'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = 'master'
|
||||
osVersion = 'ubuntu-22.04'
|
||||
expected = 'master'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
}
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
|
||||
Reference in New Issue
Block a user