Compare commits

...
11 Commits
12 changed files with 1071 additions and 802 deletions
+9 -1
View File
@@ -1,7 +1,14 @@
--- ---
name: action name: action
on: [push, workflow_dispatch] on:
push:
branches:
- main
pull_request:
branches:
- "*"
workflow_dispatch: {}
env: env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
@@ -27,6 +34,7 @@ jobs:
git add dist/index.js git add dist/index.js
git commit -m "Automation: update setup-beam version output to ${SHA}" git commit -m "Automation: update setup-beam version output to ${SHA}"
git push origin main git push origin main
check_integrity: check_integrity:
name: Expected local npm actions name: Expected local npm actions
runs-on: ubuntu-latest runs-on: ubuntu-latest
+8 -1
View File
@@ -1,7 +1,14 @@
--- ---
name: hexpm-mirrors name: hexpm-mirrors
on: [push, workflow_dispatch] on:
push:
branches:
- main
pull_request:
branches:
- "*"
workflow_dispatch: {}
jobs: jobs:
test-failing-first-mirror: test-failing-first-mirror:
+13 -5
View File
@@ -1,7 +1,14 @@
--- ---
name: ubuntu name: ubuntu
on: [push, workflow_dispatch] on:
push:
branches:
- main
pull_request:
branches:
- "*"
workflow_dispatch: {}
jobs: jobs:
integration_test: integration_test:
@@ -174,6 +181,7 @@ jobs:
mix escript.install --force ${{matrix.combo.escript_packages}} mix escript.install --force ${{matrix.combo.escript_packages}}
${{matrix.combo.escript_script}} ${{matrix.combo.escript_script}}
if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}} if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}}
environment_variables: environment_variables:
name: Environment variables name: Environment variables
runs-on: ${{matrix.combo.os}} runs-on: ${{matrix.combo.os}}
@@ -199,7 +207,7 @@ jobs:
- run: env - run: env
- name: Check environment variables - name: Check environment variables
run: | run: |
${INSTALL_DIR_FOR_ELIXIR}/elixir --version ${INSTALL_DIR_FOR_ELIXIR}/bin/elixir -v
${INSTALL_DIR_FOR_GLEAM}/gleam --version ${INSTALL_DIR_FOR_GLEAM}/bin/gleam --version
${INSTALL_DIR_FOR_OTP}/erl -version ${INSTALL_DIR_FOR_OTP}/bin/erl -version
${INSTALL_DIR_FOR_REBAR3}/rebar3 version ${INSTALL_DIR_FOR_REBAR3}/bin/rebar3 version
+14 -6
View File
@@ -1,7 +1,14 @@
--- ---
name: windows name: windows
on: [push, workflow_dispatch] on:
push:
branches:
- main
pull_request:
branches:
- "*"
workflow_dispatch: {}
jobs: jobs:
integration_test: integration_test:
@@ -112,6 +119,7 @@ jobs:
mix escript.install --force ${{matrix.combo.escript_packages}} mix escript.install --force ${{matrix.combo.escript_packages}}
${{matrix.combo.escript_script}} ${{matrix.combo.escript_script}}
if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}} if: ${{matrix.combo.escript_packages && matrix.combo.escript_script}}
environment_variables: environment_variables:
name: Environment variables name: Environment variables
runs-on: ${{matrix.combo.os}} runs-on: ${{matrix.combo.os}}
@@ -137,8 +145,8 @@ jobs:
- run: env - run: env
- name: Check environment variables - name: Check environment variables
run: | run: |
${INSTALL_DIR_FOR_ELIXIR}/elixir --version & "$Env:INSTALL_DIR_FOR_ELIXIR/bin/elixir" "-v"
${INSTALL_DIR_FOR_GLEAM}/gleam --version & "$Env:INSTALL_DIR_FOR_GLEAM/bin/gleam.exe" "--version"
${INSTALL_DIR_FOR_OTP}/erl -version & "$Env:INSTALL_DIR_FOR_OTP/bin/erl.exe" "+V"
${INSTALL_DIR_FOR_REBAR3}/rebar3 version & "$Env:INSTALL_DIR_FOR_REBAR3/bin/rebar3.cmd" "version"
shell: bash & "$Env:INSTALL_DIR_FOR_REBAR3/bin/rebar3.ps1" "version"
-1
View File
@@ -1,3 +1,2 @@
node_modules/** node_modules/**
dist/.github/workflows
test/.tool-versions test/.tool-versions
+27 -1
View File
@@ -118,7 +118,7 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: @fastify/busboy. A copy of the source code may be downloaded from https://github.com/fastify/busboy.git. This software contains the following license and notice below: The following software may be included in this product: @fastify/busboy. A copy of the source code may be downloaded from git+https://github.com/fastify/busboy.git. This software contains the following license and notice below:
Copyright Brian White. All rights reserved. Copyright Brian White. All rights reserved.
@@ -1566,6 +1566,32 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----- -----
The following software may be included in this product: es-define-property, es-errors. A copy of the source code may be downloaded from git+https://github.com/ljharb/es-define-property.git (es-define-property), git+https://github.com/ljharb/es-errors.git (es-errors). This software contains the following license and notice below:
MIT License
Copyright (c) 2024 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: es6-error. A copy of the source code may be downloaded from https://github.com/bjyoungblood/es6-error.git. This software contains the following license and notice below: The following software may be included in this product: es6-error. A copy of the source code may be downloaded from https://github.com/bjyoungblood/es6-error.git. This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
+3
View File
@@ -282,6 +282,9 @@ environment variables:
- `INSTALL_DIR_FOR_GLEAM`: base folder for Gleam - `INSTALL_DIR_FOR_GLEAM`: base folder for Gleam
- `INSTALL_DIR_FOR_REBAR3`: base folder for `rebar3` - `INSTALL_DIR_FOR_REBAR3`: base folder for `rebar3`
In each of these you'll find folder `bin` where the appropriate binaries, platform-dependant,
are found (i.e. `erl`, `erl.exe`, `rebar3`, `rebar3.exe`, ...).
## Elixir Problem Matchers ## Elixir Problem Matchers
The Elixir Problem Matchers in this repository are adapted from The Elixir Problem Matchers in this repository are adapted from
+451 -433
View File
File diff suppressed because it is too large Load Diff
+515 -342
View File
File diff suppressed because it is too large Load Diff
+3 -1
View File
@@ -11,7 +11,9 @@
"shellcheck": "shellcheck .github/workflows/*.sh", "shellcheck": "shellcheck .github/workflows/*.sh",
"test": "node test/setup-beam.test.js", "test": "node test/setup-beam.test.js",
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml", "yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml",
"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" "clean-dist": "rm -rf ./dist",
"lint": "npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint",
"build-dist": "npm run clean-dist && npm install && npm run build && npm run format && npm run lint"
}, },
"dependencies": { "dependencies": {
"@actions/core": "1.10.0", "@actions/core": "1.10.0",
+18 -11
View File
@@ -49,7 +49,7 @@ async function main() {
await maybeInstallRebar3(rebar3Spec) await maybeInstallRebar3(rebar3Spec)
// undefined is replaced by a function, post- main branch merge // undefined is replaced by a function, post- main branch merge
const setupBeamVersion = '6c8deb6' const setupBeamVersion = '4f55815'
core.setOutput('setup-beam-version', setupBeamVersion) core.setOutput('setup-beam-version', setupBeamVersion)
} }
@@ -135,7 +135,6 @@ async function maybeInstallGleam(gleamSpec) {
core.startGroup(`Installing Gleam ${gleamVersion}`) core.startGroup(`Installing Gleam ${gleamVersion}`)
await install('gleam', { toolVersion: gleamVersion }) await install('gleam', { toolVersion: gleamVersion })
core.setOutput('gleam-version', gleamVersion) core.setOutput('gleam-version', gleamVersion)
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
core.endGroup() core.endGroup()
installed = true installed = true
@@ -156,7 +155,6 @@ async function maybeInstallRebar3(rebar3Spec) {
core.startGroup(`Installing rebar3 ${rebar3Version}`) core.startGroup(`Installing rebar3 ${rebar3Version}`)
await install('rebar3', { toolVersion: rebar3Version }) await install('rebar3', { toolVersion: rebar3Version })
core.setOutput('rebar3-version', rebar3Version) core.setOutput('rebar3-version', rebar3Version)
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`)
core.endGroup() core.endGroup()
installed = true installed = true
@@ -593,7 +591,7 @@ alongside ${alternativeName}=${alternativeValue} \
} }
function parseVersionFile(versionFilePath0) { function parseVersionFile(versionFilePath0) {
const versionFilePath = path.join( const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE, process.env.GITHUB_WORKSPACE,
versionFilePath0, versionFilePath0,
) )
@@ -954,16 +952,25 @@ async function installTool(opts) {
core.debug(` ... it is, at ${cachePath}`) core.debug(` ... it is, at ${cachePath}`)
} }
core.debug('Performing post extract operations...') // This makes sure we run, e.g. in Windows, the installer in the runner
await platformOpts.postExtract(cachePath) // We're not caching the install, just the downloaded tool
const runnerToolPath = path.join(
process.env.RUNNER_TEMP,
'.setup-beam',
toolName,
)
fs.cpSync(cachePath, runnerToolPath, { recursive: true })
core.debug(`Adding ${cachePath}'s bin to system path`) core.debug('Performing post extract operations...')
const catchPathBin = path.join(cachePath, 'bin') await platformOpts.postExtract(runnerToolPath)
core.addPath(catchPathBin)
core.debug(`Adding ${runnerToolPath}' bin to system path`)
const runnerToolPathBin = path.join(runnerToolPath, 'bin')
core.addPath(runnerToolPathBin)
const installDirForVarName = `INSTALL_DIR_FOR_${toolName}`.toUpperCase() const installDirForVarName = `INSTALL_DIR_FOR_${toolName}`.toUpperCase()
core.debug(`Exporting ${installDirForVarName} as ${catchPathBin}`) core.debug(`Exporting ${installDirForVarName} as ${runnerToolPath}`)
core.exportVariable(installDirForVarName, catchPathBin) core.exportVariable(installDirForVarName, runnerToolPath)
core.info(`Installed ${installOpts.tool} version`) core.info(`Installed ${installOpts.tool} version`)
const [cmd, args] = platformOpts.reportVersion() const [cmd, args] = platformOpts.reportVersion()
+10
View File
@@ -8,6 +8,8 @@ simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
const assert = require('assert') const assert = require('assert')
const fs = require('fs') const fs = require('fs')
const os = require('os')
const path = require('path')
const core = require('@actions/core') const core = require('@actions/core')
const setupBeam = require('../src/setup-beam') const setupBeam = require('../src/setup-beam')
const { problemMatcher } = require('../matchers/elixir-matchers.json') const { problemMatcher } = require('../matchers/elixir-matchers.json')
@@ -535,6 +537,14 @@ rebar ${rebar3}`
assert.strictEqual(appVersions.get('erlang'), erlang) assert.strictEqual(appVersions.get('erlang'), erlang)
assert.strictEqual(appVersions.get('elixir'), elixir) assert.strictEqual(appVersions.get('elixir'), elixir)
const absoluteFilename = path.join(os.tmpdir(), '.tool-versions')
fs.writeFileSync(absoluteFilename, toolVersions)
process.env.GITHUB_WORKSPACE = process.cwd()
const absoluteAppVersions = setupBeam.parseVersionFile(absoluteFilename)
assert.strictEqual(absoluteAppVersions.get('erlang'), erlang)
assert.strictEqual(absoluteAppVersions.get('elixir'), elixir)
assert.ok(async () => { assert.ok(async () => {
await setupBeam.install('otp', { toolVersion: erlang }) await setupBeam.install('otp', { toolVersion: erlang })
}) })