mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-23 07:06:07 +00:00
Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 61e01a43a5 | |||
| df9a60921b | |||
| 54d4f15c75 | |||
| ea13066252 | |||
| 53bf0a5069 | |||
| 977eee5f6e | |||
| 51905b8795 | |||
| b9783cdeea | |||
| cf692c3264 | |||
| 9641cb96c1 | |||
| 94b8820fed | |||
| c2e02f777c | |||
| 2595a954a1 | |||
| a255120a82 | |||
| ffd9affe89 | |||
| 049962787b | |||
| 1f06ac36d3 | |||
| e3f6ffe287 | |||
| 81d8403713 | |||
| c10774ce0f | |||
| 37ac1c5116 | |||
| 2d314bc413 | |||
| aee3f52e58 | |||
| 96fce952fd | |||
| 35850967ef | |||
| b980a5ac9b | |||
| c373088147 | |||
| 529221db21 | |||
| f19acc5287 | |||
| 00a8fc1243 | |||
| 713cc2ffe3 | |||
| 8d31e4db55 | |||
| 4c52669fda | |||
| 6a5f23a6f0 | |||
| 8bfa104bdd |
@@ -9,7 +9,6 @@ parserOptions:
|
|||||||
rules:
|
rules:
|
||||||
indent: ["warn", 2]
|
indent: ["warn", 2]
|
||||||
max-len: ["warn", 100]
|
max-len: ["warn", 100]
|
||||||
no-console: 0
|
|
||||||
no-undef: "error"
|
no-undef: "error"
|
||||||
no-unused-vars: ["error", {"varsIgnorePattern": "^_"}]
|
no-unused-vars: ["error", {"varsIgnorePattern": "^_"}]
|
||||||
no-use-before-define: 0
|
no-use-before-define: 0
|
||||||
|
|||||||
@@ -6,16 +6,18 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
types: [opened, synchronize]
|
||||||
- main
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_integrity:
|
check_integrity:
|
||||||
name: Expected local npm actions
|
name: Expected local npm actions
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '14'
|
node-version: '14'
|
||||||
- run: npm install -g npm
|
- run: npm install -g npm
|
||||||
@@ -28,25 +30,31 @@ jobs:
|
|||||||
- run: npm run yamllint
|
- run: npm run yamllint
|
||||||
- run: npm run jslint
|
- run: npm run jslint
|
||||||
- name: Check if build left artifacts
|
- name: Check if build left artifacts
|
||||||
run: git diff --exit-code
|
run: git diff --exit-code --ignore-space-at-eol
|
||||||
|
|
||||||
unit_tests_ubuntu:
|
unit_tests_ubuntu:
|
||||||
name: Unit tests (Ubuntu)
|
name: Unit tests (Ubuntu)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '14'
|
node-version: '14'
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm test
|
- run: npm test
|
||||||
|
- name: .tool-versions test
|
||||||
|
id: setup-beam
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
version-file: test/.tool-versions
|
||||||
|
version-type: strict
|
||||||
|
|
||||||
unit_tests_windows:
|
unit_tests_windows:
|
||||||
name: Unit tests (Windows)
|
name: Unit tests (Windows)
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '14'
|
node-version: '14'
|
||||||
- run: npm install --production
|
- run: npm install --production
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
name: hexpm-mirrors
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-failing-first-mirror:
|
||||||
|
name: Test option hexpm-mirrors with a dummy first mirror
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: ['ubuntu-22.04', 'windows-2022']
|
||||||
|
otp-version: ['24']
|
||||||
|
elixir-version: ['v1.14', '']
|
||||||
|
install-rebar: [true, false]
|
||||||
|
install-hex: [true, false]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Use erlef/setup-beam
|
||||||
|
id: setup-beam
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
otp-version: ${{matrix.otp-version}}
|
||||||
|
elixir-version: ${{matrix.elixir-version}}
|
||||||
|
install-rebar: ${{matrix.install-rebar}}
|
||||||
|
install-hex: ${{matrix.install-hex}}
|
||||||
|
hexpm-mirrors: |
|
||||||
|
https://mirror.invalid
|
||||||
|
https://cdn.jsdelivr.net/hex
|
||||||
|
https://builds.hex.pm
|
||||||
@@ -6,8 +6,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
types: [opened, synchronize]
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
integration_test:
|
integration_test:
|
||||||
@@ -21,6 +20,13 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
combo:
|
combo:
|
||||||
|
- otp-version: '25.2'
|
||||||
|
elixir-version: '1.14.3'
|
||||||
|
os: 'ubuntu-latest'
|
||||||
|
- otp-version: '25.2'
|
||||||
|
elixir-version: '1.14.3'
|
||||||
|
os: 'ubuntu-latest'
|
||||||
|
version-type: 'strict'
|
||||||
- otp-version: '25'
|
- otp-version: '25'
|
||||||
elixir-version: '1'
|
elixir-version: '1'
|
||||||
rebar3-version: '3'
|
rebar3-version: '3'
|
||||||
@@ -45,20 +51,10 @@ jobs:
|
|||||||
- otp-version: '24'
|
- otp-version: '24'
|
||||||
rebar3-version: 'nightly'
|
rebar3-version: 'nightly'
|
||||||
os: 'ubuntu-latest'
|
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'
|
- elixir-version: 'v1.4'
|
||||||
otp-version: '20'
|
otp-version: '20'
|
||||||
rebar3-version: '3.6.0'
|
rebar3-version: '3.15.0'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.4'
|
- elixir-version: 'v1.4'
|
||||||
otp-version: '20'
|
otp-version: '20'
|
||||||
rebar3-version: '3.11'
|
rebar3-version: '3.11'
|
||||||
@@ -66,7 +62,7 @@ jobs:
|
|||||||
- elixir-version: 'v1.6'
|
- elixir-version: 'v1.6'
|
||||||
otp-version: '21'
|
otp-version: '21'
|
||||||
rebar3-version: '3.12'
|
rebar3-version: '3.12'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.6'
|
- elixir-version: 'v1.6'
|
||||||
otp-version: '21'
|
otp-version: '21'
|
||||||
rebar3-version: '3.12'
|
rebar3-version: '3.12'
|
||||||
@@ -74,7 +70,7 @@ jobs:
|
|||||||
- elixir-version: 'v1.7'
|
- elixir-version: 'v1.7'
|
||||||
otp-version: '22'
|
otp-version: '22'
|
||||||
rebar3-version: '3.13'
|
rebar3-version: '3.13'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.7'
|
- elixir-version: 'v1.7'
|
||||||
otp-version: '22'
|
otp-version: '22'
|
||||||
rebar3-version: '3.13'
|
rebar3-version: '3.13'
|
||||||
@@ -82,11 +78,11 @@ jobs:
|
|||||||
- elixir-version: 'v1.10'
|
- elixir-version: 'v1.10'
|
||||||
otp-version: '23'
|
otp-version: '23'
|
||||||
rebar3-version: '3.14'
|
rebar3-version: '3.14'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.13.4'
|
- elixir-version: 'v1.13.4'
|
||||||
otp-version: '25.0.2'
|
otp-version: '25.0.2'
|
||||||
rebar3-version: '3.19'
|
rebar3-version: '3.19'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.10'
|
- elixir-version: 'v1.10'
|
||||||
otp-version: '23'
|
otp-version: '23'
|
||||||
rebar3-version: '3.14'
|
rebar3-version: '3.14'
|
||||||
@@ -113,26 +109,33 @@ jobs:
|
|||||||
- elixir-version: 'master'
|
- elixir-version: 'master'
|
||||||
otp-version: '23.1'
|
otp-version: '23.1'
|
||||||
os: 'ubuntu-20.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'master'
|
- elixir-version: 'main'
|
||||||
otp-version: '25'
|
otp-version: '25'
|
||||||
os: 'ubuntu-20.04'
|
os: 'ubuntu-20.04'
|
||||||
version-type: 'strict'
|
version-type: 'strict'
|
||||||
- gleam-version: 'nightly'
|
|
||||||
otp-version: '24'
|
|
||||||
- gleam-version: '0.23'
|
- gleam-version: '0.23'
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
os: 'ubuntu-latest'
|
os: 'ubuntu-latest'
|
||||||
|
disable_problem_matchers: true
|
||||||
- gleam-version: '0.23.0-rc1'
|
- gleam-version: '0.23.0-rc1'
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
os: 'ubuntu-latest'
|
os: 'ubuntu-latest'
|
||||||
|
disable_problem_matchers: true
|
||||||
- gleam-version: '0.23.0-rc1'
|
- gleam-version: '0.23.0-rc1'
|
||||||
otp-version: false
|
otp-version: false
|
||||||
os: 'ubuntu-latest'
|
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'
|
otp-version: '24'
|
||||||
os: 'ubuntu-latest'
|
os: 'ubuntu-latest'
|
||||||
|
disable_problem_matchers: true
|
||||||
|
- elixir-version: 'v1.13'
|
||||||
|
otp-version: '24'
|
||||||
|
escript_packages: 'hex protobuf'
|
||||||
|
escript_script: 'protoc-gen-elixir --version'
|
||||||
|
os: 'ubuntu-latest'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Use erlef/setup-beam
|
- name: Use erlef/setup-beam
|
||||||
id: setup-beam
|
id: setup-beam
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -162,25 +165,30 @@ jobs:
|
|||||||
if: ${{matrix.combo.elixir-version}}
|
if: ${{matrix.combo.elixir-version}}
|
||||||
- name: Run Elixir/Mix project tests
|
- name: Run Elixir/Mix project tests
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/elixir_mix
|
cd test/projects/elixir_mix
|
||||||
mix deps.get
|
mix deps.get
|
||||||
mix test
|
mix test
|
||||||
if: ${{matrix.combo.elixir-version}}
|
if: ${{matrix.combo.elixir-version}}
|
||||||
- name: Run Erlang/rebar3 project tests
|
- name: Run Erlang/rebar3 project tests
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/erlang_rebar3
|
cd test/projects/erlang_rebar3
|
||||||
rebar3 ct
|
rebar3 ct
|
||||||
if: ${{matrix.combo.rebar3-version}}
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
- name: Type check Gleam project (without installing Erlang/OTP)
|
- name: Format Gleam project (without installing Erlang/OTP)
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/gleam_gleam
|
cd test/projects/gleam_gleam
|
||||||
gleam check
|
gleam format
|
||||||
if: ${{ matrix.combo.gleam-version && !matrix.combo.otp-version }}
|
if: ${{ matrix.combo.gleam-version && !matrix.combo.otp-version }}
|
||||||
- name: Run Gleam project tests (without `rebar3`)
|
- name: Run Gleam project tests (without `rebar3`)
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/gleam_gleam
|
cd test/projects/gleam_gleam
|
||||||
gleam test
|
gleam test
|
||||||
if: ${{ matrix.combo.gleam-version && matrix.combo.otp-version && !matrix.combo.rebar3-version }}
|
if: ${{ matrix.combo.gleam-version && matrix.combo.otp-version && !matrix.combo.rebar3-version }}
|
||||||
|
- name: Run escript
|
||||||
|
run: |
|
||||||
|
mix escript.install --force ${{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}}
|
||||||
@@ -194,7 +202,7 @@ jobs:
|
|||||||
rebar3-version: 'nightly'
|
rebar3-version: 'nightly'
|
||||||
os: 'ubuntu-latest'
|
os: 'ubuntu-latest'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Use erlef/setup-beam
|
- name: Use erlef/setup-beam
|
||||||
id: setup-beam
|
id: setup-beam
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -206,7 +214,7 @@ jobs:
|
|||||||
- run: env
|
- run: env
|
||||||
- name: List environment variables
|
- name: List environment variables
|
||||||
run: |
|
run: |
|
||||||
echo "${{env.INSTALL_DIR_FOR_ELIXIR}}"
|
[ -n "${INSTALL_DIR_FOR_ELIXIR}" ] && echo "${INSTALL_DIR_FOR_ELIXIR}"
|
||||||
echo "${{env.INSTALL_DIR_FOR_GLEAM}}"
|
[ -n "${INSTALL_DIR_FOR_GLEAM}" ] && echo "${INSTALL_DIR_FOR_GLEAM}"
|
||||||
echo "${{env.INSTALL_DIR_FOR_OTP}}"
|
[ -n "${INSTALL_DIR_FOR_OTP}" ] && echo "${INSTALL_DIR_FOR_OTP}"
|
||||||
echo "${{env.INSTALL_DIR_FOR_REBAR3}}"
|
[ -n "${INSTALL_DIR_FOR_REBAR3}" ] && echo "${INSTALL_DIR_FOR_REBAR3}"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: update_3rd_party_licenses
|
name: Update 3rd party licenses (automation)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
@@ -11,11 +11,11 @@ jobs:
|
|||||||
name: Update 3rd party licenses
|
name: Update 3rd party licenses
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '14'
|
node-version: '14'
|
||||||
- run:
|
- run:
|
||||||
./.github/workflows/update_3rd_party_licenses.sh
|
./.github/workflows/update_3rd_party_licenses.sh
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
types: [opened, synchronize]
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
integration_test:
|
integration_test:
|
||||||
@@ -37,16 +36,23 @@ jobs:
|
|||||||
otp-version: '23'
|
otp-version: '23'
|
||||||
rebar3-version: '3.14'
|
rebar3-version: '3.14'
|
||||||
os: 'windows-latest'
|
os: 'windows-latest'
|
||||||
- elixir-version: 'v1.11'
|
- elixir-version: 'v1.13'
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
rebar3-version: '3.15'
|
rebar3-version: '3.15'
|
||||||
os: 'windows-latest'
|
os: 'windows-latest'
|
||||||
|
- gleam-version: '0.19.0-rc3'
|
||||||
|
otp-version: '24'
|
||||||
|
os: 'windows-latest'
|
||||||
- gleam-version: '0.23.0-rc1'
|
- gleam-version: '0.23.0-rc1'
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
rebar3-version: '3.16'
|
os: 'windows-latest'
|
||||||
|
- elixir-version: 'v1.13'
|
||||||
|
otp-version: '24'
|
||||||
|
escript_packages: 'hex protobuf'
|
||||||
|
escript_script: 'protoc-gen-elixir --version'
|
||||||
os: 'windows-latest'
|
os: 'windows-latest'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Use erlef/setup-beam
|
- name: Use erlef/setup-beam
|
||||||
id: setup-beam
|
id: setup-beam
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -65,6 +71,17 @@ jobs:
|
|||||||
if: ${{matrix.combo.gleam-version}}
|
if: ${{matrix.combo.gleam-version}}
|
||||||
- name: rebar3 version (action)
|
- name: rebar3 version (action)
|
||||||
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
|
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
|
||||||
|
- name: Run rebar3 and rebar3.cmd
|
||||||
|
run: |
|
||||||
|
# Should not fail
|
||||||
|
rebar3 version
|
||||||
|
rebar3.cmd version
|
||||||
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
|
- name: rebar3 from Rust
|
||||||
|
run: |
|
||||||
|
cd test/projects/rust_rebar3_cmd
|
||||||
|
cargo test -- --nocapture
|
||||||
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
- name: mix version and help (CLI)
|
- name: mix version and help (CLI)
|
||||||
run: |
|
run: |
|
||||||
mix -v
|
mix -v
|
||||||
@@ -73,15 +90,20 @@ jobs:
|
|||||||
if: ${{matrix.combo.elixir-version}}
|
if: ${{matrix.combo.elixir-version}}
|
||||||
- name: Run Elixir/Mix project tests
|
- name: Run Elixir/Mix project tests
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/elixir_mix
|
cd test/projects/elixir_mix
|
||||||
mix deps.get
|
mix deps.get
|
||||||
mix test
|
mix test
|
||||||
if: ${{matrix.combo.elixir-version}}
|
if: ${{matrix.combo.elixir-version}}
|
||||||
- name: Run Erlang/rebar3 project tests
|
- name: Run Erlang/rebar3 project tests
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/erlang_rebar3
|
cd test/projects/erlang_rebar3
|
||||||
rebar3 ct
|
rebar3 ct
|
||||||
if: ${{matrix.combo.rebar3-version}}
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
|
- name: Run escript
|
||||||
|
run: |
|
||||||
|
mix escript.install --force ${{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}}
|
||||||
@@ -95,7 +117,7 @@ jobs:
|
|||||||
rebar3-version: 'nightly'
|
rebar3-version: 'nightly'
|
||||||
os: 'windows-latest'
|
os: 'windows-latest'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Use erlef/setup-beam
|
- name: Use erlef/setup-beam
|
||||||
id: setup-beam
|
id: setup-beam
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -107,7 +129,8 @@ jobs:
|
|||||||
- run: env
|
- run: env
|
||||||
- name: List environment variables
|
- name: List environment variables
|
||||||
run: |
|
run: |
|
||||||
echo "${{env.INSTALL_DIR_FOR_ELIXIR}}"
|
[ -n "${INSTALL_DIR_FOR_ELIXIR}" ] && echo "${INSTALL_DIR_FOR_ELIXIR}"
|
||||||
echo "${{env.INSTALL_DIR_FOR_GLEAM}}"
|
[ -n "${INSTALL_DIR_FOR_GLEAM}" ] && echo "${INSTALL_DIR_FOR_GLEAM}"
|
||||||
echo "${{env.INSTALL_DIR_FOR_OTP}}"
|
[ -n "${INSTALL_DIR_FOR_OTP}" ] && echo "${INSTALL_DIR_FOR_OTP}"
|
||||||
echo "${{env.INSTALL_DIR_FOR_REBAR3}}"
|
[ -n "${INSTALL_DIR_FOR_REBAR3}" ] && echo "${INSTALL_DIR_FOR_REBAR3}"
|
||||||
|
shell: bash
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
node_modules/**
|
node_modules/**
|
||||||
dist/.github/workflows
|
dist/.github/workflows
|
||||||
|
test/.tool-versions
|
||||||
|
|||||||
+591
-117
@@ -2,7 +2,7 @@ THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY B
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: @actions/core, @actions/exec, @actions/io. A copy of the source code may be downloaded from git+https://github.com/actions/toolkit.git (@actions/core), git+https://github.com/actions/toolkit.git (@actions/exec), git+https://github.com/actions/toolkit.git (@actions/io). This software contains the following license and notice below:
|
The following software may be included in this product: @actions/core, @actions/exec, @actions/io, @actions/tool-cache. A copy of the source code may be downloaded from git+https://github.com/actions/toolkit.git (@actions/core), git+https://github.com/actions/toolkit.git (@actions/exec), git+https://github.com/actions/toolkit.git (@actions/io), git+https://github.com/actions/toolkit.git (@actions/tool-cache). This software contains the following license and notice below:
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: @humanwhocodes/config-array. A copy of the source code may be downloaded from git+https://github.com/humanwhocodes/config-array.git. This software contains the following license and notice below:
|
The following software may be included in this product: @humanwhocodes/config-array, @humanwhocodes/module-importer. A copy of the source code may be downloaded from git+https://github.com/humanwhocodes/config-array.git (@humanwhocodes/config-array), git+https://github.com/humanwhocodes/module-importer.git (@humanwhocodes/module-importer). This software contains the following license and notice below:
|
||||||
|
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
@@ -447,7 +447,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: ansi-regex, ansi-styles, array-union, callsites, chalk, globby, has-flag, is-fullwidth-code-point, parent-module, path-key, path-type, resolve-from, shebang-regex, slash, string-width, strip-ansi, supports-color. A copy of the source code may be downloaded from https://github.com/chalk/ansi-regex.git (ansi-regex), https://github.com/chalk/ansi-styles.git (ansi-styles), https://github.com/sindresorhus/array-union.git (array-union), https://github.com/sindresorhus/callsites.git (callsites), https://github.com/chalk/chalk.git (chalk), https://github.com/sindresorhus/globby.git (globby), https://github.com/sindresorhus/has-flag.git (has-flag), https://github.com/sindresorhus/is-fullwidth-code-point.git (is-fullwidth-code-point), https://github.com/sindresorhus/parent-module.git (parent-module), https://github.com/sindresorhus/path-key.git (path-key), https://github.com/sindresorhus/path-type.git (path-type), https://github.com/sindresorhus/resolve-from.git (resolve-from), https://github.com/sindresorhus/shebang-regex.git (shebang-regex), https://github.com/sindresorhus/slash.git (slash), https://github.com/sindresorhus/string-width.git (string-width), https://github.com/chalk/strip-ansi.git (strip-ansi), https://github.com/chalk/supports-color.git (supports-color). This software contains the following license and notice below:
|
The following software may be included in this product: ansi-regex, ansi-styles, array-union, callsites, chalk, globby, has-flag, is-fullwidth-code-point, parent-module, path-exists, path-key, path-type, resolve-from, shebang-regex, slash, string-width, strip-ansi, supports-color. A copy of the source code may be downloaded from https://github.com/chalk/ansi-regex.git (ansi-regex), https://github.com/chalk/ansi-styles.git (ansi-styles), https://github.com/sindresorhus/array-union.git (array-union), https://github.com/sindresorhus/callsites.git (callsites), https://github.com/chalk/chalk.git (chalk), https://github.com/sindresorhus/globby.git (globby), https://github.com/sindresorhus/has-flag.git (has-flag), https://github.com/sindresorhus/is-fullwidth-code-point.git (is-fullwidth-code-point), https://github.com/sindresorhus/parent-module.git (parent-module), https://github.com/sindresorhus/path-exists.git (path-exists), https://github.com/sindresorhus/path-key.git (path-key), https://github.com/sindresorhus/path-type.git (path-type), https://github.com/sindresorhus/resolve-from.git (resolve-from), https://github.com/sindresorhus/shebang-regex.git (shebang-regex), https://github.com/sindresorhus/slash.git (slash), https://github.com/sindresorhus/string-width.git (string-width), https://github.com/chalk/strip-ansi.git (strip-ansi), https://github.com/chalk/supports-color.git (supports-color). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -926,6 +926,32 @@ limitations under the License.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: array-buffer-byte-length. A copy of the source code may be downloaded from git+https://github.com/inspect-js/array-buffer-byte-length.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Inspect JS
|
||||||
|
|
||||||
|
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: array-includes, define-properties. A copy of the source code may be downloaded from git://github.com/es-shims/array-includes.git (array-includes), git://github.com/ljharb/define-properties.git (define-properties). This software contains the following license and notice below:
|
The following software may be included in this product: array-includes, define-properties. A copy of the source code may be downloaded from git://github.com/es-shims/array-includes.git (array-includes), git://github.com/ljharb/define-properties.git (define-properties). This software contains the following license and notice below:
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
@@ -1002,6 +1028,32 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: available-typed-arrays, is-weakref, typed-array-length. A copy of the source code may be downloaded from git+https://github.com/inspect-js/available-typed-arrays.git (available-typed-arrays), git+https://github.com/inspect-js/is-weakref.git (is-weakref), git+https://github.com/inspect-js/typed-array-length.git (typed-array-length). This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Inspect JS
|
||||||
|
|
||||||
|
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: axe-core. A copy of the source code may be downloaded from https://github.com/dequelabs/axe-core.git. This software contains the following license and notice below:
|
The following software may be included in this product: axe-core. A copy of the source code may be downloaded from https://github.com/dequelabs/axe-core.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
Mozilla Public License, version 2.0
|
Mozilla Public License, version 2.0
|
||||||
@@ -1543,7 +1595,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:
|
This software is released under the MIT license:
|
||||||
|
|
||||||
@@ -1594,7 +1646,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
The following software may be included in this product: core-js-pure. A copy of the source code may be downloaded from https://github.com/zloirock/core-js.git. This software contains the following license and notice below:
|
The following software may be included in this product: core-js-pure. A copy of the source code may be downloaded from https://github.com/zloirock/core-js.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
Copyright (c) 2014-2022 Denis Pushkarev
|
Copyright (c) 2014-2023 Denis Pushkarev
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -2009,7 +2061,33 @@ 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-set-tostringtag. A copy of the source code may be downloaded from git+https://github.com/es-shims/es-set-tostringtag.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 ECMAScript Shims
|
||||||
|
|
||||||
|
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: es-shim-unscopables, gopd, 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/gopd.git (gopd), git+https://github.com/ljharb/safe-regex-test.git (safe-regex-test). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -2035,7 +2113,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: es-to-primitive, is-boolean-object, is-callable, is-date-object, is-number-object, is-string, is-symbol, object.entries, object.values, string.prototype.matchall. A copy of the source code may be downloaded from git://github.com/ljharb/es-to-primitive.git (es-to-primitive), git://github.com/inspect-js/is-boolean-object.git (is-boolean-object), git://github.com/inspect-js/is-callable.git (is-callable), git://github.com/inspect-js/is-date-object.git (is-date-object), git://github.com/inspect-js/is-number-object.git (is-number-object), git://github.com/ljharb/is-string.git (is-string), git://github.com/inspect-js/is-symbol.git (is-symbol), git://github.com/es-shims/Object.entries.git (object.entries), git://github.com/es-shims/Object.values.git (object.values), git+https://github.com/es-shims/String.prototype.matchAll.git (string.prototype.matchall). This software contains the following license and notice below:
|
The following software may be included in this product: es-to-primitive, is-boolean-object, is-callable, is-date-object, is-number-object, is-string, is-symbol, is-typed-array, object.entries, object.values, string.prototype.matchall, which-typed-array. A copy of the source code may be downloaded from git://github.com/ljharb/es-to-primitive.git (es-to-primitive), git://github.com/inspect-js/is-boolean-object.git (is-boolean-object), git://github.com/inspect-js/is-callable.git (is-callable), git://github.com/inspect-js/is-date-object.git (is-date-object), git://github.com/inspect-js/is-number-object.git (is-number-object), git://github.com/ljharb/is-string.git (is-string), git://github.com/inspect-js/is-symbol.git (is-symbol), git://github.com/inspect-js/is-typed-array.git (is-typed-array), git://github.com/es-shims/Object.entries.git (object.entries), git://github.com/es-shims/Object.values.git (object.values), git+https://github.com/es-shims/String.prototype.matchAll.git (string.prototype.matchall), git://github.com/inspect-js/which-typed-array.git (which-typed-array). This software contains the following license and notice below:
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
@@ -2101,7 +2179,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: escape-string-regexp, globals, import-fresh, matcher, serialize-error, strip-json-comments, wrap-ansi. A copy of the source code may be downloaded from https://github.com/sindresorhus/escape-string-regexp.git (escape-string-regexp), https://github.com/sindresorhus/globals.git (globals), https://github.com/sindresorhus/import-fresh.git (import-fresh), https://github.com/sindresorhus/matcher.git (matcher), https://github.com/sindresorhus/serialize-error.git (serialize-error), https://github.com/sindresorhus/strip-json-comments.git (strip-json-comments), https://github.com/chalk/wrap-ansi.git (wrap-ansi). This software contains the following license and notice below:
|
The following software may be included in this product: escape-string-regexp, find-up, globals, import-fresh, locate-path, matcher, p-limit, p-locate, serialize-error, strip-json-comments, wrap-ansi, yocto-queue. A copy of the source code may be downloaded from https://github.com/sindresorhus/escape-string-regexp.git (escape-string-regexp), https://github.com/sindresorhus/find-up.git (find-up), https://github.com/sindresorhus/globals.git (globals), https://github.com/sindresorhus/import-fresh.git (import-fresh), https://github.com/sindresorhus/locate-path.git (locate-path), https://github.com/sindresorhus/matcher.git (matcher), https://github.com/sindresorhus/p-limit.git (p-limit), https://github.com/sindresorhus/p-locate.git (p-locate), https://github.com/sindresorhus/serialize-error.git (serialize-error), https://github.com/sindresorhus/strip-json-comments.git (strip-json-comments), https://github.com/chalk/wrap-ansi.git (wrap-ansi), https://github.com/sindresorhus/yocto-queue.git (yocto-queue). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -2180,7 +2258,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: eslint-plugin-react. A copy of the source code may be downloaded from https://github.com/yannickcr/eslint-plugin-react. This software contains the following license and notice below:
|
The following software may be included in this product: eslint-plugin-react. A copy of the source code may be downloaded from https://github.com/jsx-eslint/eslint-plugin-react. This software contains the following license and notice below:
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
@@ -2719,6 +2797,32 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: for-each. A copy of the source code may be downloaded from git://github.com/Raynos/for-each.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2012 Raynos.
|
||||||
|
|
||||||
|
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: fs.realpath. A copy of the source code may be downloaded from git+https://github.com/isaacs/fs.realpath.git. This software contains the following license and notice below:
|
The following software may be included in this product: fs.realpath. A copy of the source code may be downloaded from git+https://github.com/isaacs/fs.realpath.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
The ISC License
|
The ISC License
|
||||||
@@ -2817,32 +2921,6 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: functional-red-black-tree. A copy of the source code may be downloaded from git://github.com/mikolalysenko/functional-red-black-tree.git. This software contains the following license and notice below:
|
|
||||||
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2013 Mikola Lysenko
|
|
||||||
|
|
||||||
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: functions-have-names, has-bigints, internal-slot, side-channel, unbox-primitive, which-boxed-primitive. A copy of the source code may be downloaded from git+https://github.com/inspect-js/functions-have-names.git (functions-have-names), git+https://github.com/ljharb/has-bigints.git (has-bigints), git+https://github.com/ljharb/internal-slot.git (internal-slot), git+https://github.com/ljharb/side-channel.git (side-channel), git+https://github.com/ljharb/unbox-primitive.git (unbox-primitive), git+https://github.com/inspect-js/which-boxed-primitive.git (which-boxed-primitive). This software contains the following license and notice below:
|
The following software may be included in this product: functions-have-names, has-bigints, internal-slot, side-channel, unbox-primitive, which-boxed-primitive. A copy of the source code may be downloaded from git+https://github.com/inspect-js/functions-have-names.git (functions-have-names), git+https://github.com/ljharb/has-bigints.git (has-bigints), git+https://github.com/ljharb/internal-slot.git (internal-slot), git+https://github.com/ljharb/side-channel.git (side-channel), git+https://github.com/ljharb/unbox-primitive.git (unbox-primitive), git+https://github.com/inspect-js/which-boxed-primitive.git (which-boxed-primitive). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -3001,7 +3079,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: has-property-descriptors, supports-preserve-symlinks-flag. A copy of the source code may be downloaded from git+https://github.com/inspect-js/has-property-descriptors.git (has-property-descriptors), git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git (supports-preserve-symlinks-flag). This software contains the following license and notice below:
|
The following software may be included in this product: grapheme-splitter. A copy of the source code may be downloaded from https://github.com/orling/grapheme-splitter.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Orlin Georgiev
|
||||||
|
|
||||||
|
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: has-property-descriptors, has-proto, supports-preserve-symlinks-flag. A copy of the source code may be downloaded from git+https://github.com/inspect-js/has-property-descriptors.git (has-property-descriptors), git+https://github.com/inspect-js/has-proto.git (has-proto), git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git (supports-preserve-symlinks-flag). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -3139,6 +3243,32 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: is-array-buffer. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-array-buffer.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2015 Chen Gengyuan, Inspect JS
|
||||||
|
|
||||||
|
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: is-bigint, object.fromentries. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-bigint.git (is-bigint), git://github.com/es-shims/Object.fromEntries.git (object.fromentries). This software contains the following license and notice below:
|
The following software may be included in this product: is-bigint, object.fromentries. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-bigint.git (is-bigint), git://github.com/es-shims/Object.fromEntries.git (object.fromentries). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -3267,11 +3397,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: is-weakref. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-weakref.git. This software contains the following license and notice below:
|
The following software may be included in this product: js-sdsl. A copy of the source code may be downloaded from https://github.com/js-sdsl/js-sdsl.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2020 Inspect JS
|
Copyright (c) 2021 Zilong Yao
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -3505,26 +3635,6 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: lru-cache. A copy of the source code may be downloaded from git://github.com/isaacs/node-lru-cache.git. This software contains the following license and notice below:
|
|
||||||
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) 2010-2022 Isaac Z. Schlueter and Contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
The following software may be included in this product: markdown-it. A copy of the source code may be downloaded from https://github.com/markdown-it/markdown-it.git. This software contains the following license and notice below:
|
The following software may be included in this product: markdown-it. A copy of the source code may be downloaded from https://github.com/markdown-it/markdown-it.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
Copyright (c) 2014 Vitaly Puzrin, Alex Kocharin.
|
Copyright (c) 2014 Vitaly Puzrin, Alex Kocharin.
|
||||||
@@ -4034,7 +4144,7 @@ Repository: <https://github.com/babel/babel.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### @babel/parser@v7.17.8
|
### @babel/parser@v7.18.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
By: The Babel Team
|
By: The Babel Team
|
||||||
@@ -4088,7 +4198,7 @@ License: MIT
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### @glimmer/syntax@v0.84.1
|
### @glimmer/syntax@v0.84.2
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
|
|
||||||
@@ -4114,7 +4224,7 @@ License: MIT
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### @glimmer/util@v0.84.1
|
### @glimmer/util@v0.84.2
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
|
|
||||||
@@ -4253,7 +4363,7 @@ License: MIT
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### @typescript-eslint/types@v5.17.0
|
### @typescript-eslint/types@v5.27.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
||||||
@@ -4282,7 +4392,7 @@ Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### @typescript-eslint/typescript-estree@v5.17.0
|
### @typescript-eslint/typescript-estree@v5.27.0
|
||||||
|
|
||||||
License: BSD-2-Clause
|
License: BSD-2-Clause
|
||||||
Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
||||||
@@ -4316,7 +4426,7 @@ Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### @typescript-eslint/visitor-keys@v5.17.0
|
### @typescript-eslint/visitor-keys@v5.27.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
Repository: <https://github.com/typescript-eslint/typescript-eslint.git>
|
||||||
@@ -4418,7 +4528,7 @@ By: Sindre Sorhus
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### angular-estree-parser@v2.5.0
|
### angular-estree-parser@v2.5.1
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
By: Ika
|
By: Ika
|
||||||
@@ -4964,6 +5074,39 @@ Repository: <git@github.com:dfcreative/color-name.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### commondir@v1.0.1
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: James Halliday
|
||||||
|
Repository: <http://github.com/substack/node-commondir.git>
|
||||||
|
|
||||||
|
> The MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) 2013 James Halliday (mail@substack.net)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### concat-map@v0.0.1
|
### concat-map@v0.0.1
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -5068,6 +5211,35 @@ By: Sindre Sorhus
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### css-units-list@v1.1.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: fisker Cheung
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) fisker Cheung <lionkay@gmail.com> (https://www.fiskercheung.com/)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### dashify@v2.0.0
|
### dashify@v2.0.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -5097,6 +5269,34 @@ By: Jon Schlinkert
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### debug@v4.3.4
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Josh Junon
|
||||||
|
Repository: <git://github.com/debug-js/debug.git>
|
||||||
|
|
||||||
|
> (The MIT License)
|
||||||
|
>
|
||||||
|
> Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca>
|
||||||
|
> Copyright (c) 2018-2021 Josh Junon
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### defaults@v1.0.3
|
### defaults@v1.0.3
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -5754,6 +5954,35 @@ Repository: <git+https://github.com/mcollina/fastq.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### file-entry-cache@v6.0.1
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Roy Riojas
|
||||||
|
|
||||||
|
> The MIT License (MIT)
|
||||||
|
>
|
||||||
|
> Copyright (c) 2015 Roy Riojas
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### fill-range@v7.0.1
|
### fill-range@v7.0.1
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -5783,6 +6012,22 @@ By: Jon Schlinkert
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### find-cache-dir@v3.3.2
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### find-parent-dir@v0.3.1
|
### find-parent-dir@v0.3.1
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -5815,6 +6060,76 @@ Repository: <git://github.com/thlorenz/find-parent-dir.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### find-up@v4.1.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
### flat-cache@v3.0.4
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Roy Riojas
|
||||||
|
|
||||||
|
> The MIT License (MIT)
|
||||||
|
>
|
||||||
|
> Copyright (c) 2015 Roy Riojas
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
### flatted@v3.2.5
|
||||||
|
|
||||||
|
License: ISC
|
||||||
|
By: Andrea Giammarchi
|
||||||
|
Repository: <git+https://github.com/WebReflection/flatted.git>
|
||||||
|
|
||||||
|
> ISC License
|
||||||
|
>
|
||||||
|
> Copyright (c) 2018-2020, Andrea Giammarchi, @WebReflection
|
||||||
|
>
|
||||||
|
> Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
> purpose with or without fee is hereby granted, provided that the above
|
||||||
|
> copyright notice and this permission notice appear in all copies.
|
||||||
|
>
|
||||||
|
> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
> REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
> AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
> INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
> LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||||
|
> OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
> PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### flatten@v1.0.3
|
### flatten@v1.0.3
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -5845,7 +6160,7 @@ Repository: <git+https://github.com/mk-pmb/flatten-js.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### flow-parser@v0.175.0
|
### flow-parser@v0.180.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
By: Flow Team
|
By: Flow Team
|
||||||
@@ -7270,7 +7585,7 @@ Repository: <https://github.com/eventualbuddha/lines-and-columns.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### linguist-languages@v7.15.0
|
### linguist-languages@v7.21.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
By: Ika
|
By: Ika
|
||||||
@@ -7299,58 +7614,20 @@ By: Ika
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### lodash@v4.17.21
|
### locate-path@v5.0.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
By: John-David Dalton
|
By: Sindre Sorhus
|
||||||
|
|
||||||
> Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
> MIT License
|
||||||
>
|
>
|
||||||
> Based on Underscore.js, copyright Jeremy Ashkenas,
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
> DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
|
|
||||||
>
|
>
|
||||||
> This software consists of voluntary contributions made by many
|
> 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:
|
||||||
> individuals. For exact contribution history, see the revision history
|
|
||||||
> available at https://github.com/lodash/lodash
|
|
||||||
>
|
>
|
||||||
> The following license applies to all parts of this software except as
|
> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
> documented below:
|
|
||||||
>
|
>
|
||||||
> ====
|
> 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.
|
||||||
>
|
|
||||||
> 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.
|
|
||||||
>
|
|
||||||
> ====
|
|
||||||
>
|
|
||||||
> Copyright and related rights for sample code are waived via CC0. Sample
|
|
||||||
> code is defined as all source code displayed within the prose of the
|
|
||||||
> documentation.
|
|
||||||
>
|
|
||||||
> CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
|
||||||
>
|
|
||||||
> ====
|
|
||||||
>
|
|
||||||
> Files located in the node_modules and vendor directories are externally
|
|
||||||
> maintained libraries used by this software which have their own
|
|
||||||
> licenses; we recommend you read them, as their terms may differ from the
|
|
||||||
> terms above.
|
|
||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
@@ -7400,6 +7677,23 @@ By: Isaac Z. Schlueter
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### make-dir@v3.1.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### map-age-cleaner@v0.1.3
|
### map-age-cleaner@v0.1.3
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -7635,6 +7929,34 @@ Repository: <git://github.com/substack/minimist.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### ms@v2.1.2
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
> The MIT License (MIT)
|
||||||
|
>
|
||||||
|
> Copyright (c) 2016 Zeit, Inc.
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### n-readlines@v1.0.1
|
### n-readlines@v1.0.1
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -7781,6 +8103,40 @@ By: Sindre Sorhus
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### p-limit@v2.3.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
### p-locate@v4.1.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### p-map@v4.0.0
|
### p-map@v4.0.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -7798,6 +8154,23 @@ By: Sindre Sorhus
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### p-try@v2.2.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### parse-entities@v2.0.0
|
### parse-entities@v2.0.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -7875,6 +8248,23 @@ Repository: <git+https://github.com/albell/parse-srcset.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### path-exists@v4.0.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### path-is-absolute@v1.0.1
|
### path-is-absolute@v1.0.1
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -8020,6 +8410,23 @@ By: Jon Schlinkert
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### pkg-dir@v4.2.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### please-upgrade-node@v3.2.0
|
### please-upgrade-node@v3.2.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -8478,7 +8885,24 @@ Repository: <git://github.com/feross/run-parallel.git>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### semver@v7.3.5
|
### sdbm@v2.0.0
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
By: Sindre Sorhus
|
||||||
|
|
||||||
|
> MIT License
|
||||||
|
>
|
||||||
|
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
||||||
|
>
|
||||||
|
> 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.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
### semver@v6.3.0
|
||||||
|
|
||||||
License: ISC
|
License: ISC
|
||||||
|
|
||||||
@@ -8500,6 +8924,30 @@ License: ISC
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
### semver@v7.3.7
|
||||||
|
|
||||||
|
License: ISC
|
||||||
|
By: GitHub Inc.
|
||||||
|
Repository: <https://github.com/npm/node-semver.git>
|
||||||
|
|
||||||
|
> The ISC License
|
||||||
|
>
|
||||||
|
> Copyright (c) Isaac Z. Schlueter and Contributors
|
||||||
|
>
|
||||||
|
> Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
> purpose with or without fee is hereby granted, provided that the above
|
||||||
|
> copyright notice and this permission notice appear in all copies.
|
||||||
|
>
|
||||||
|
> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||||
|
> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
### semver-compare@v1.0.0
|
### semver-compare@v1.0.0
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -8931,7 +9379,7 @@ Repository: <https://github.com/ajafff/tsutils>
|
|||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
### typescript@v4.6.3
|
### typescript@v4.7.2
|
||||||
|
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
By: Microsoft Corp.
|
By: Microsoft Corp.
|
||||||
@@ -9631,7 +10079,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: regenerator-runtime. A copy of the source code may be downloaded from https://github.com/facebook/regenerator/tree/master/packages/runtime. This software contains the following license and notice below:
|
The following software may be included in this product: regenerator-runtime. A copy of the source code may be downloaded from https://github.com/facebook/regenerator/tree/main/packages/runtime. This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -9791,6 +10239,32 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: string.prototype.trim. A copy of the source code may be downloaded from git://github.com/es-shims/String.prototype.trim.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 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: string.prototype.trimend, string.prototype.trimstart. A copy of the source code may be downloaded from git://github.com/es-shims/String.prototype.trimEnd.git (string.prototype.trimend), git://github.com/es-shims/String.prototype.trimStart.git (string.prototype.trimstart). This software contains the following license and notice below:
|
The following software may be included in this product: string.prototype.trimend, string.prototype.trimstart. A copy of the source code may be downloaded from git://github.com/es-shims/String.prototype.trimEnd.git (string.prototype.trimend), git://github.com/es-shims/String.prototype.trimStart.git (string.prototype.trimstart). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -9964,11 +10438,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: v8-compile-cache. A copy of the source code may be downloaded from https://github.com/zertosh/v8-compile-cache.git. This software contains the following license and notice below:
|
The following software may be included in this product: uuid. A copy of the source code may be downloaded from https://github.com/uuidjs/uuid.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2019 Andres Suarez
|
Copyright (c) 2010-2016 Robert Kieffer and other contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# Elixir Problem Matchers
|
# Elixir Problem Matchers
|
||||||
|
|
||||||
Elixir Problem Matchers in [elixir-matchers.json](.github/elixir-matchers.json)
|
Elixir Problem Matchers in [elixir-matchers.json](matchers/elixir-matchers.json)
|
||||||
are adapted from [here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118),
|
are adapted from [here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118),
|
||||||
available under the [MIT license](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/LICENSE.md):
|
available under the [MIT license](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/LICENSE.md):
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<!-- markdownlint-disable MD013 -->
|
<!-- markdownlint-disable MD013 -->
|
||||||
# setup-beam [![GitHub Actions][action-img]][action] [![GitHub Actions][ubuntu-img]][ubuntu] [![GitHub Actions][windows-img]][windows]
|
# setup-beam [![GitHub Actions][action-img]][action] [![GitHub Actions][ubuntu-img]][ubuntu] [![GitHub Actions][windows-img]][windows]
|
||||||
|
|
||||||
[action]: https://github.com/erlef/setup-beam
|
[action]: https://github.com/erlef/setup-beam/actions/workflows/action.yml
|
||||||
[action-img]: https://github.com/erlef/setup-beam/workflows/action/badge.svg
|
[action-img]: https://github.com/erlef/setup-beam/actions/workflows/action.yml/badge.svg
|
||||||
[ubuntu]: https://github.com/erlef/setup-beam
|
[ubuntu]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml
|
||||||
[ubuntu-img]: https://github.com/erlef/setup-beam/workflows/ubuntu/badge.svg
|
[ubuntu-img]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml/badge.svg
|
||||||
[windows]: https://github.com/erlef/setup-beam
|
[windows]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml
|
||||||
[windows-img]: https://github.com/erlef/setup-beam/workflows/windows/badge.svg
|
[windows-img]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml/badge.svg
|
||||||
|
|
||||||
This action sets up an Erlang/OTP environment for use in a GitHub Actions
|
This action sets up an Erlang/OTP environment for use in a GitHub Actions
|
||||||
workflow by:
|
workflow by:
|
||||||
@@ -16,9 +16,11 @@ workflow by:
|
|||||||
- optionally, installing [Gleam](https://gleam.run/)
|
- optionally, installing [Gleam](https://gleam.run/)
|
||||||
- optionally, installing [`rebar3`](https://www.rebar3.org/)
|
- optionally, installing [`rebar3`](https://www.rebar3.org/)
|
||||||
- optionally, installing [`hex`](https://hex.pm/)
|
- optionally, installing [`hex`](https://hex.pm/)
|
||||||
|
- optionally, opting for strict or loose version matching
|
||||||
- optionally, having
|
- optionally, having
|
||||||
[problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) show
|
[problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) show
|
||||||
warnings and errors on pull requests
|
warnings and errors on pull requests
|
||||||
|
- optionally, using a version file (as explained in "Version file", below), to identify versions
|
||||||
|
|
||||||
**Note**: currently, this action only supports Actions' `ubuntu-` and `windows-` runtimes.
|
**Note**: currently, this action only supports Actions' `ubuntu-` and `windows-` runtimes.
|
||||||
|
|
||||||
@@ -81,11 +83,36 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04
|
ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Version file
|
||||||
|
|
||||||
|
A version file is specified via input `version-file` (e.g.`.tool-versions`). This
|
||||||
|
allows not having to use YML input for versions, though the action does check (and
|
||||||
|
will exit with error) if both inputs are set.
|
||||||
|
|
||||||
|
**Note**: if you're using a version file, option `version-type` is checked to be `strict`,
|
||||||
|
and will make the action exit with error otherwise.
|
||||||
|
|
||||||
|
The following version file formats are supported:
|
||||||
|
|
||||||
|
- `.tool-versions`, as specified by [asdf: Configuration](https://asdf-vm.com/manage/configuration.html)
|
||||||
|
|
||||||
|
Supported version elements are the same as the ones defined for the YML portion of the action,
|
||||||
|
with the following correspondence.
|
||||||
|
|
||||||
|
#### `.tool-versions` format
|
||||||
|
|
||||||
|
| YML | `.tool-versions` |
|
||||||
|
|- |-
|
||||||
|
| `otp-version` | `erlang`
|
||||||
|
| `elixir-version` | `elixir`
|
||||||
|
| `gleam-version` | `gleam`
|
||||||
|
| `rebar3-version` | `rebar`
|
||||||
|
|
||||||
### Example (Erlang/OTP + Elixir, on Ubuntu)
|
### Example (Erlang/OTP + Elixir, on Ubuntu)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -94,14 +121,14 @@ on: push
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
name: OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}}
|
name: OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
otp: ['20.3', '21.3', '22.2']
|
otp: ['20.3', '21.3', '22.2']
|
||||||
elixir: ['1.8.2', '1.9.4']
|
elixir: ['1.8.2', '1.9.4']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: ${{matrix.otp}}
|
otp-version: ${{matrix.otp}}
|
||||||
@@ -118,14 +145,14 @@ on: push
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
name: Erlang/OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}}
|
name: Erlang/OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
otp: ['20.3', '21.3', '22.2']
|
otp: ['20.3', '21.3', '22.2']
|
||||||
rebar3: ['3.14.1', '3.14.3']
|
rebar3: ['3.14.1', '3.14.3']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: ${{matrix.otp}}
|
otp-version: ${{matrix.otp}}
|
||||||
@@ -143,7 +170,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: windows-2022
|
runs-on: windows-2022
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
@@ -161,7 +188,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
@@ -179,7 +206,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: false
|
otp-version: false
|
||||||
@@ -189,6 +216,47 @@ jobs:
|
|||||||
|
|
||||||
**Note**: the `otp-version: false` input is only applicable when installing Gleam.
|
**Note**: the `otp-version: false` input is only applicable when installing Gleam.
|
||||||
|
|
||||||
|
## Alternative hex.pm mirrors
|
||||||
|
|
||||||
|
It is possible to use alternative hex.pm mirror(s), in their declared order, with
|
||||||
|
option `hexpm-mirrors`. By default, the action will use `builds.hex.pm`.
|
||||||
|
To use other alternative mirrors, add one per line, as shown below.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# create this in .github/workflows/ci.yml
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: erlef/setup-beam@v1
|
||||||
|
with:
|
||||||
|
otp-version: '25'
|
||||||
|
# Use `cdn.jsdelivr.net/hex` as an alternative to `builds.hex.pm`
|
||||||
|
hexpm-mirrors: https://cdn.jsdelivr.net/hex
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, you may try `cdn.jsdelivr.net/hex` if `builds.hex.pm` fails:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# create this in .github/workflows/ci.yml
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: erlef/setup-beam@v1
|
||||||
|
with:
|
||||||
|
otp-version: '25'
|
||||||
|
hexpm-mirrors: |
|
||||||
|
https://builds.hex.pm
|
||||||
|
https://cdn.jsdelivr.net/hex
|
||||||
|
```
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
Base installation folders (useful for e.g. fetching headers for NIFs) are available in the following
|
Base installation folders (useful for e.g. fetching headers for NIFs) are available in the following
|
||||||
|
|||||||
+18
-2
@@ -8,10 +8,18 @@ branding:
|
|||||||
color: blue
|
color: blue
|
||||||
icon: code
|
icon: code
|
||||||
inputs:
|
inputs:
|
||||||
|
github-token:
|
||||||
|
description: >
|
||||||
|
A GitHub token used to access the GitHub REST API for retrieving release and version information.
|
||||||
|
While this action will never perform anything more than read operations against the GitHub REST API,
|
||||||
|
we do not recommend providing a self-generated personal access token which may provide more access than is
|
||||||
|
required of this action. This input instead is merely a convenience so that users of this action do not
|
||||||
|
have to manually pass an automatically generated token via their environment settings within a workflow.
|
||||||
|
[Learn more about automatically generated tokens](https://docs.github.com/en/actions/security-guides/automatic-token-authentication)
|
||||||
|
default: ${{ github.token }}
|
||||||
otp-version:
|
otp-version:
|
||||||
description: Version range or exact version of Erlang/OTP to use,
|
description: Version range or exact version of Erlang/OTP to use,
|
||||||
or false when installing only Gleam without OTP
|
or false when installing only Gleam without OTP
|
||||||
required: true
|
|
||||||
elixir-version:
|
elixir-version:
|
||||||
description: Version range or exact version of Elixir to use
|
description: Version range or exact version of Elixir to use
|
||||||
gleam-version:
|
gleam-version:
|
||||||
@@ -31,8 +39,16 @@ inputs:
|
|||||||
to guess versions based on semver rules
|
to guess versions based on semver rules
|
||||||
default: loose
|
default: loose
|
||||||
disable_problem_matchers:
|
disable_problem_matchers:
|
||||||
description: whether to have the problem matchers present in the results (or not)
|
description: whether to have the problem matchers present in the results
|
||||||
|
(or not)
|
||||||
default: false
|
default: false
|
||||||
|
version-file:
|
||||||
|
description: a versions file (e.g. as used by `asdf`), which defines inputs
|
||||||
|
default: ''
|
||||||
|
hexpm-mirrors:
|
||||||
|
description: mirror(s) for hex.pm, one per line
|
||||||
|
default: |
|
||||||
|
https://builds.hex.pm
|
||||||
outputs:
|
outputs:
|
||||||
elixir-version:
|
elixir-version:
|
||||||
description: Exact version of Elixir that was installed
|
description: Exact version of Elixir that was installed
|
||||||
|
|||||||
Vendored
-16
@@ -57,22 +57,6 @@
|
|||||||
"column": 3
|
"column": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"owner": "elixir-dialyzerOutputDefault",
|
|
||||||
"severity": "warning",
|
|
||||||
"pattern": [
|
|
||||||
{
|
|
||||||
"regexp": "^(.*):(\\d+):(.*)",
|
|
||||||
"file": 1,
|
|
||||||
"line": 2,
|
|
||||||
"code": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"regexp": "^(.*)$",
|
|
||||||
"message": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,22 +57,6 @@
|
|||||||
"column": 3
|
"column": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"owner": "elixir-dialyzerOutputDefault",
|
|
||||||
"severity": "warning",
|
|
||||||
"pattern": [
|
|
||||||
{
|
|
||||||
"regexp": "^(.*):(\\d+):(.*)",
|
|
||||||
"file": 1,
|
|
||||||
"line": 2,
|
|
||||||
"code": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"regexp": "^(.*)$",
|
|
||||||
"message": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Vendored
+3845
-1027
File diff suppressed because it is too large
Load Diff
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_INPUT="${VSN}.zip"
|
|
||||||
$FILE_OUTPUT="elixir.zip"
|
|
||||||
$DIR_FOR_BIN=".setup-beam/elixir"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "https://repo.hex.pm/builds/elixir/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
Write-Output "Installed Elixir version follows"
|
|
||||||
& "${DIR_FOR_BIN}/bin/elixir" "-v" | Write-Output
|
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_ELIXIR=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
Vendored
-18
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
VSN=${1}
|
|
||||||
FILE_INPUT="${VSN}.zip"
|
|
||||||
FILE_OUTPUT=elixir.zip
|
|
||||||
DIR_FOR_BIN=.setup-beam/elixir
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/elixir/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
unzip -q -o -d "${DIR_FOR_BIN}" "${FILE_OUTPUT}"
|
|
||||||
echo "Installed Elixir version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/elixir -v
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_ELIXIR=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
Vendored
+17
-1
@@ -4,10 +4,26 @@ $ErrorActionPreference="Stop"
|
|||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
Set-Location ${Env:RUNNER_TEMP}
|
||||||
|
|
||||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
|
||||||
$FILE_OUTPUT="gleam.zip"
|
$FILE_OUTPUT="gleam.zip"
|
||||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
$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"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||||
$ProgressPreference="Continue"
|
$ProgressPreference="Continue"
|
||||||
|
|||||||
Vendored
+4
-3
@@ -9,12 +9,13 @@ FILE_OUTPUT=gleam.tar.gz
|
|||||||
DIR_FOR_BIN=.setup-beam/gleam
|
DIR_FOR_BIN=.setup-beam/gleam
|
||||||
|
|
||||||
version_gt() {
|
version_gt() {
|
||||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
REFERENCE=$1
|
||||||
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$REFERENCE"
|
||||||
}
|
}
|
||||||
|
|
||||||
uses_llvm_triplets() {
|
uses_llvm_triplets() {
|
||||||
local version="$1"
|
local VERSION="$1"
|
||||||
test "$version" = "nightly" || version_gt "$version" "v0.22.1"
|
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
if uses_llvm_triplets "$VSN"
|
if uses_llvm_triplets "$VSN"
|
||||||
|
|||||||
Vendored
-17
@@ -1,17 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_OUTPUT="otp.exe"
|
|
||||||
$ERL_ROOT = "${Env:RUNNER_TEMP}\.setup-beam\otp"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/otp_win64_${VSN}.exe" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
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}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
Vendored
-20
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
OS=${1}
|
|
||||||
VSN=${2}
|
|
||||||
FILE_INPUT="${VSN}.tar.gz"
|
|
||||||
FILE_OUTPUT=otp.tar.gz
|
|
||||||
DIR_FOR_BIN=.setup-beam/otp
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/otp/${OS}/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1
|
|
||||||
"${DIR_FOR_BIN}/Install" -minimal "$(pwd)/${DIR_FOR_BIN}"
|
|
||||||
echo "Installed Erlang/OTP version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/erl -version
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
Vendored
+4
-2
@@ -7,6 +7,7 @@ Set-Location ${Env:RUNNER_TEMP}
|
|||||||
$FILE_INPUT="rebar3"
|
$FILE_INPUT="rebar3"
|
||||||
$FILE_OUTPUT="rebar3"
|
$FILE_OUTPUT="rebar3"
|
||||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||||
|
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
@@ -22,9 +23,10 @@ $ProgressPreference="Continue"
|
|||||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
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 "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||||
type ${FILE_OUTPUT_PS1}
|
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_PS1}" "${DIR_FOR_BIN}/bin"
|
||||||
|
Move-Item "${FILE_OUTPUT_CMD}" "${DIR_FOR_BIN}/bin"
|
||||||
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
||||||
& "${DIR_FOR_BIN}/bin/rebar3" "version" | Write-Output
|
& "${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
|
"INSTALL_DIR_FOR_REBAR3=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Generated
+541
-282
File diff suppressed because it is too large
Load Diff
+16
-14
@@ -4,12 +4,12 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "ncc build src/setup-beam.js --no-cache",
|
"build": "ncc build src/setup-beam.js --no-cache",
|
||||||
"format": "prettier src/**/*.js --write && prettier __tests__/**/*.js --write",
|
"format": "prettier src/**/*.js --write && prettier test/**/*.js --write",
|
||||||
"jslint": "eslint src/**/*.js && eslint __tests__/**/*.js",
|
"jslint": "eslint src/**/*.js && eslint test/**/*.js",
|
||||||
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
|
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
|
||||||
"markdownlint": "markdownlint *.md",
|
"markdownlint": "markdownlint *.md",
|
||||||
"shellcheck": "shellcheck src/install-*.sh .github/workflows/*.sh",
|
"shellcheck": "shellcheck src/install-*.sh .github/workflows/*.sh",
|
||||||
"test": "node __tests__/setup-beam.test.js && node ./__tests__/problem-matchers.test.js",
|
"test": "node test/setup-beam.test.js && node ./test/problem-matchers.test.js",
|
||||||
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml",
|
"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": "npm install && npm run build && npm run format && npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint"
|
||||||
},
|
},
|
||||||
@@ -19,23 +19,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "1.9.1",
|
"@actions/core": "1.10.0",
|
||||||
"@actions/exec": "1.1.1",
|
"@actions/exec": "1.1.1",
|
||||||
"semver": "7.3.6"
|
"@actions/http-client": "2.1.0",
|
||||||
|
"@actions/tool-cache": "^2.0.1",
|
||||||
|
"semver": "7.3.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vercel/ncc": "0.33.4",
|
"@vercel/ncc": "0.34.0",
|
||||||
"eslint": "8.14.0",
|
"eslint": "8.25.0",
|
||||||
"eslint-config-airbnb": "19.0.4",
|
"eslint-config-airbnb": "19.0.4",
|
||||||
"eslint-plugin-import": "2.26.0",
|
"eslint-plugin-import": "2.26.0",
|
||||||
"eslint-plugin-jsx-a11y": "6.5.1",
|
"eslint-plugin-jsx-a11y": "6.6.1",
|
||||||
"eslint-plugin-react": "7.29.0",
|
"eslint-plugin-react": "7.31.10",
|
||||||
"husky": "7.0.4",
|
"husky": "8.0.1",
|
||||||
"markdownlint": "0.25.1",
|
"markdownlint": "0.26.2",
|
||||||
"prettier": "2.6.2",
|
"prettier": "2.7.1",
|
||||||
"shellcheck": "1.1.0",
|
"shellcheck": "1.1.0",
|
||||||
"yaml-lint": "1.3.0",
|
"yaml-lint": "1.7.0",
|
||||||
"yarn": "1.22.18"
|
"yarn": "1.22.19"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16"
|
"node": ">=16"
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_INPUT="${VSN}.zip"
|
|
||||||
$FILE_OUTPUT="elixir.zip"
|
|
||||||
$DIR_FOR_BIN=".setup-beam/elixir"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "https://repo.hex.pm/builds/elixir/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
Write-Output "Installed Elixir version follows"
|
|
||||||
& "${DIR_FOR_BIN}/bin/elixir" "-v" | Write-Output
|
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_ELIXIR=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
VSN=${1}
|
|
||||||
FILE_INPUT="${VSN}.zip"
|
|
||||||
FILE_OUTPUT=elixir.zip
|
|
||||||
DIR_FOR_BIN=.setup-beam/elixir
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/elixir/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
unzip -q -o -d "${DIR_FOR_BIN}" "${FILE_OUTPUT}"
|
|
||||||
echo "Installed Elixir version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/elixir -v
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_ELIXIR=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
+17
-1
@@ -4,10 +4,26 @@ $ErrorActionPreference="Stop"
|
|||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
Set-Location ${Env:RUNNER_TEMP}
|
||||||
|
|
||||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
|
||||||
$FILE_OUTPUT="gleam.zip"
|
$FILE_OUTPUT="gleam.zip"
|
||||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
$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"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||||
$ProgressPreference="Continue"
|
$ProgressPreference="Continue"
|
||||||
|
|||||||
@@ -9,12 +9,13 @@ FILE_OUTPUT=gleam.tar.gz
|
|||||||
DIR_FOR_BIN=.setup-beam/gleam
|
DIR_FOR_BIN=.setup-beam/gleam
|
||||||
|
|
||||||
version_gt() {
|
version_gt() {
|
||||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
REFERENCE=$1
|
||||||
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$REFERENCE"
|
||||||
}
|
}
|
||||||
|
|
||||||
uses_llvm_triplets() {
|
uses_llvm_triplets() {
|
||||||
local version="$1"
|
local VERSION="$1"
|
||||||
test "$version" = "nightly" || version_gt "$version" "v0.22.1"
|
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
if uses_llvm_triplets "$VSN"
|
if uses_llvm_triplets "$VSN"
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
param([Parameter(Mandatory=$true)][string]${VSN})
|
|
||||||
|
|
||||||
$ErrorActionPreference="Stop"
|
|
||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
|
||||||
|
|
||||||
$FILE_OUTPUT="otp.exe"
|
|
||||||
$ERL_ROOT = "${Env:RUNNER_TEMP}\.setup-beam\otp"
|
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
|
||||||
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/otp_win64_${VSN}.exe" -OutFile "${FILE_OUTPUT}"
|
|
||||||
$ProgressPreference="Continue"
|
|
||||||
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}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
cd "${RUNNER_TEMP}"
|
|
||||||
|
|
||||||
OS=${1}
|
|
||||||
VSN=${2}
|
|
||||||
FILE_INPUT="${VSN}.tar.gz"
|
|
||||||
FILE_OUTPUT=otp.tar.gz
|
|
||||||
DIR_FOR_BIN=.setup-beam/otp
|
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "https://repo.hex.pm/builds/otp/${OS}/${FILE_INPUT}"
|
|
||||||
mkdir -p "${DIR_FOR_BIN}"
|
|
||||||
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}" --strip-components=1
|
|
||||||
"${DIR_FOR_BIN}/Install" -minimal "$(pwd)/${DIR_FOR_BIN}"
|
|
||||||
echo "Installed Erlang/OTP version follows"
|
|
||||||
${DIR_FOR_BIN}/bin/erl -version
|
|
||||||
|
|
||||||
echo "INSTALL_DIR_FOR_OTP=${RUNNER_TEMP}/${DIR_FOR_BIN}" >> "${GITHUB_ENV}"
|
|
||||||
@@ -7,6 +7,7 @@ Set-Location ${Env:RUNNER_TEMP}
|
|||||||
$FILE_INPUT="rebar3"
|
$FILE_INPUT="rebar3"
|
||||||
$FILE_OUTPUT="rebar3"
|
$FILE_OUTPUT="rebar3"
|
||||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||||
|
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
@@ -22,9 +23,10 @@ $ProgressPreference="Continue"
|
|||||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
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 "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||||
type ${FILE_OUTPUT_PS1}
|
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_PS1}" "${DIR_FOR_BIN}/bin"
|
||||||
|
Move-Item "${FILE_OUTPUT_CMD}" "${DIR_FOR_BIN}/bin"
|
||||||
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
||||||
& "${DIR_FOR_BIN}/bin/rebar3" "version" | Write-Output
|
& "${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
|
"INSTALL_DIR_FOR_REBAR3=${Env:RUNNER_TEMP}/${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||||
|
|||||||
+98
-13
@@ -1,19 +1,76 @@
|
|||||||
|
const core = require('@actions/core')
|
||||||
const { exec } = require('@actions/exec')
|
const { exec } = require('@actions/exec')
|
||||||
|
const tc = require('@actions/tool-cache')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
const fs = require('fs')
|
||||||
|
const os = require('os')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Install Erlang/OTP.
|
* Install Erlang/OTP.
|
||||||
*
|
*
|
||||||
* @param {string} osVersion
|
* @param {string} osVersion
|
||||||
* @param {string} otpVersion
|
* @param {string} otpVersion
|
||||||
|
* @param {string[]} hexMirrors
|
||||||
*/
|
*/
|
||||||
async function installOTP(osVersion, otpVersion) {
|
async function installOTP(osVersion, otpVersion, hexMirrors) {
|
||||||
|
if (hexMirrors.length === 0) {
|
||||||
|
throw new Error(
|
||||||
|
`Could not install Erlang/OTP ${otpVersion} from any hex.pm mirror`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
||||||
|
const fullVersion = `${osVersion}/${otpVersion}`
|
||||||
|
let cachedPath = tc.find('otp', fullVersion)
|
||||||
const OS = process.platform
|
const OS = process.platform
|
||||||
if (OS === 'linux') {
|
|
||||||
await exec(path.join(__dirname, 'install-otp.sh'), [osVersion, otpVersion])
|
try {
|
||||||
} else if (OS === 'win32') {
|
if (OS === 'linux') {
|
||||||
const script = path.join(__dirname, 'install-otp.ps1')
|
if (!cachedPath) {
|
||||||
await exec(`pwsh.exe ${script} -VSN:${otpVersion}`)
|
const tarPath = await tc.downloadTool(
|
||||||
|
`https://builds.hex.pm/builds/otp/${fullVersion}.tar.gz`,
|
||||||
|
)
|
||||||
|
const extractPath = await tc.extractTar(tarPath, undefined, [
|
||||||
|
'zx',
|
||||||
|
'--strip-components=1',
|
||||||
|
])
|
||||||
|
cachedPath = await tc.cacheDir(extractPath, 'otp', fullVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
await exec(path.join(cachedPath, 'Install'), ['-minimal', cachedPath])
|
||||||
|
|
||||||
|
const otpPath = path.join(cachedPath, 'bin')
|
||||||
|
|
||||||
|
core.addPath(otpPath)
|
||||||
|
core.exportVariable('INSTALL_DIR_FOR_OTP', cachedPath)
|
||||||
|
|
||||||
|
core.info('Installed Erlang/OTP version')
|
||||||
|
await exec(path.join(otpPath, 'erl'), ['-version'])
|
||||||
|
} else if (OS === 'win32') {
|
||||||
|
if (!cachedPath) {
|
||||||
|
const exePath = await tc.downloadTool(
|
||||||
|
'https://github.com/erlang/otp/releases/download/' +
|
||||||
|
`OTP-${otpVersion}/otp_win64_${otpVersion}.exe`,
|
||||||
|
)
|
||||||
|
cachedPath = await tc.cacheFile(exePath, 'otp.exe', 'otp', fullVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
const otpDir = path.join(process.env.RUNNER_TEMP, '.setup-beam', 'otp')
|
||||||
|
const otpPath = path.join(otpDir, 'bin')
|
||||||
|
|
||||||
|
await fs.promises.mkdir(otpDir, { recursive: true })
|
||||||
|
await exec(path.join(cachedPath, 'otp.exe'), ['/S', `/D=${otpDir}`])
|
||||||
|
|
||||||
|
core.addPath(otpPath)
|
||||||
|
core.exportVariable('INSTALL_DIR_FOR_OTP', otpDir)
|
||||||
|
|
||||||
|
core.info('Installed Erlang/OTP version')
|
||||||
|
await exec(path.join(otpPath, 'erl'), ['+V'])
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
core.info(`Install OTP failed for mirror ${hexMirror}`)
|
||||||
|
core.info(`${err}\n${err.stack}`)
|
||||||
|
await installOTP(osVersion, otpVersion, hexMirrorsT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,14 +78,42 @@ async function installOTP(osVersion, otpVersion) {
|
|||||||
* Install Elixir.
|
* Install Elixir.
|
||||||
*
|
*
|
||||||
* @param {string} elixirVersion
|
* @param {string} elixirVersion
|
||||||
|
* @param {string[]} hexMirrors
|
||||||
*/
|
*/
|
||||||
async function installElixir(elixirVersion) {
|
async function installElixir(elixirVersion, hexMirrors) {
|
||||||
const OS = process.platform
|
if (hexMirrors.length === 0) {
|
||||||
if (OS === 'linux') {
|
throw new Error(
|
||||||
await exec(path.join(__dirname, 'install-elixir.sh'), [elixirVersion])
|
`Could not install Elixir ${elixirVersion} from any hex.pm mirror`,
|
||||||
} else if (OS === 'win32') {
|
)
|
||||||
const script = path.join(__dirname, 'install-elixir.ps1')
|
}
|
||||||
await exec(`pwsh.exe ${script} -VSN:${elixirVersion}`)
|
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
||||||
|
|
||||||
|
try {
|
||||||
|
let cachedPath = tc.find('elixir', elixirVersion)
|
||||||
|
|
||||||
|
if (!cachedPath) {
|
||||||
|
const zipPath = await tc.downloadTool(
|
||||||
|
`${hexMirror}/builds/elixir/${elixirVersion}.zip`,
|
||||||
|
)
|
||||||
|
const extractPath = await tc.extractZip(zipPath)
|
||||||
|
cachedPath = await tc.cacheDir(extractPath, 'elixir', elixirVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
const elixirPath = path.join(cachedPath, 'bin')
|
||||||
|
const escriptsPath = path.join(os.homedir(), '.mix', 'escripts')
|
||||||
|
|
||||||
|
core.addPath(elixirPath)
|
||||||
|
core.addPath(escriptsPath)
|
||||||
|
core.exportVariable('INSTALL_DIR_FOR_ELIXIR', cachedPath)
|
||||||
|
|
||||||
|
core.info('Installed Elixir version')
|
||||||
|
await exec(path.join(elixirPath, 'elixir'), ['-v'])
|
||||||
|
|
||||||
|
await fs.promises.mkdir(escriptsPath, { recursive: true })
|
||||||
|
} catch (err) {
|
||||||
|
core.info(`Elixir install failed for mirror ${hexMirror}`)
|
||||||
|
core.info(`${err}\n${err.stack}`)
|
||||||
|
await installElixir(elixirVersion, hexMirrorsT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+265
-157
@@ -1,8 +1,9 @@
|
|||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
const { exec } = require('@actions/exec')
|
const { exec } = require('@actions/exec')
|
||||||
|
const http = require('@actions/http-client')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const semver = require('semver')
|
const semver = require('semver')
|
||||||
const https = require('https')
|
const fs = require('fs')
|
||||||
const installer = require('./installer')
|
const installer = require('./installer')
|
||||||
|
|
||||||
main().catch((err) => {
|
main().catch((err) => {
|
||||||
@@ -12,25 +13,39 @@ main().catch((err) => {
|
|||||||
async function main() {
|
async function main() {
|
||||||
installer.checkPlatform()
|
installer.checkPlatform()
|
||||||
|
|
||||||
|
const versionFilePath = getInput('version-file', false)
|
||||||
|
let versions
|
||||||
|
if (versionFilePath) {
|
||||||
|
if (!isStrictVersion()) {
|
||||||
|
throw new Error(
|
||||||
|
"you have to set version-type=strict if you're using version-file",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
versions = parseVersionFile(versionFilePath)
|
||||||
|
}
|
||||||
|
|
||||||
const osVersion = getRunnerOSVersion()
|
const osVersion = getRunnerOSVersion()
|
||||||
const otpSpec = core.getInput('otp-version', { required: true })
|
const otpSpec = getInput('otp-version', true, 'erlang', versions)
|
||||||
const elixirSpec = core.getInput('elixir-version', { required: false })
|
const elixirSpec = getInput('elixir-version', false, 'elixir', versions)
|
||||||
const gleamSpec = core.getInput('gleam-version', { required: false })
|
const gleamSpec = getInput('gleam-version', false, 'gleam', versions)
|
||||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
const rebar3Spec = getInput('rebar3-version', false, 'rebar', versions)
|
||||||
|
const hexMirrors = core.getMultilineInput('hexpm-mirrors', {
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
|
||||||
if (otpSpec !== 'false') {
|
if (otpSpec !== 'false') {
|
||||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
await installOTP(otpSpec, osVersion, hexMirrors)
|
||||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
const elixirInstalled = await maybeInstallElixir(
|
||||||
|
elixirSpec,
|
||||||
|
otpSpec,
|
||||||
|
hexMirrors,
|
||||||
|
)
|
||||||
|
|
||||||
if (elixirInstalled === true) {
|
if (elixirInstalled === true) {
|
||||||
const shouldMixRebar = core.getInput('install-rebar', {
|
const shouldMixRebar = getInput('install-rebar', false)
|
||||||
required: false,
|
await mix(shouldMixRebar, 'rebar', hexMirrors)
|
||||||
})
|
const shouldMixHex = getInput('install-hex', false)
|
||||||
await mix(shouldMixRebar, 'rebar')
|
await mix(shouldMixHex, 'hex', hexMirrors)
|
||||||
const shouldMixHex = core.getInput('install-hex', {
|
|
||||||
required: false,
|
|
||||||
})
|
|
||||||
await mix(shouldMixHex, 'hex')
|
|
||||||
}
|
}
|
||||||
} else if (!gleamSpec) {
|
} else if (!gleamSpec) {
|
||||||
throw new Error('otp-version=false is only available when installing Gleam')
|
throw new Error('otp-version=false is only available when installing Gleam')
|
||||||
@@ -40,38 +55,39 @@ async function main() {
|
|||||||
await maybeInstallRebar3(rebar3Spec)
|
await maybeInstallRebar3(rebar3Spec)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function installOTP(otpSpec, osVersion) {
|
async function installOTP(otpSpec, osVersion, hexMirrors) {
|
||||||
const otpVersion = await getOTPVersion(otpSpec, osVersion)
|
const otpVersion = await getOTPVersion(otpSpec, osVersion, hexMirrors)
|
||||||
console.log(
|
core.startGroup(`Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`)
|
||||||
`##[group]Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`,
|
await installer.installOTP(osVersion, otpVersion, hexMirrors)
|
||||||
)
|
|
||||||
await installer.installOTP(osVersion, otpVersion)
|
|
||||||
core.setOutput('otp-version', otpVersion)
|
core.setOutput('otp-version', otpVersion)
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/otp/bin`)
|
core.endGroup()
|
||||||
console.log('##[endgroup]')
|
|
||||||
|
|
||||||
return otpVersion
|
return otpVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
async function maybeInstallElixir(elixirSpec, otpVersion) {
|
async function maybeInstallElixir(elixirSpec, otpSpec, hexMirrors) {
|
||||||
let installed = false
|
let installed = false
|
||||||
|
|
||||||
if (elixirSpec) {
|
if (elixirSpec) {
|
||||||
const elixirVersion = await getElixirVersion(elixirSpec, otpVersion)
|
const elixirVersion = await getElixirVersion(
|
||||||
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
elixirSpec,
|
||||||
await installer.installElixir(elixirVersion)
|
otpSpec,
|
||||||
|
hexMirrors,
|
||||||
|
)
|
||||||
|
core.startGroup(`Installing Elixir ${elixirVersion}`)
|
||||||
|
await installer.installElixir(elixirVersion, hexMirrors)
|
||||||
core.setOutput('elixir-version', elixirVersion)
|
core.setOutput('elixir-version', elixirVersion)
|
||||||
const disableProblemMatchers = core.getInput('disable_problem_matchers', {
|
const disableProblemMatchers = getInput('disable_problem_matchers', false)
|
||||||
required: false,
|
|
||||||
})
|
|
||||||
if (disableProblemMatchers === 'false') {
|
if (disableProblemMatchers === 'false') {
|
||||||
const matchersPath = path.join(__dirname, '..', '.github')
|
const elixirMatchers = path.join(
|
||||||
console.log(
|
__dirname,
|
||||||
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
'..',
|
||||||
|
'matchers',
|
||||||
|
'elixir-matchers.json',
|
||||||
)
|
)
|
||||||
|
core.info(`##[add-matcher]${elixirMatchers}`)
|
||||||
}
|
}
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
core.endGroup()
|
||||||
console.log('##[endgroup]')
|
|
||||||
|
|
||||||
installed = true
|
installed = true
|
||||||
}
|
}
|
||||||
@@ -79,13 +95,29 @@ async function maybeInstallElixir(elixirSpec, otpVersion) {
|
|||||||
return installed
|
return installed
|
||||||
}
|
}
|
||||||
|
|
||||||
async function mix(shouldMix, what) {
|
async function mixWithMirrors(cmd, args, hexMirrors) {
|
||||||
|
if (hexMirrors.length === 0) {
|
||||||
|
throw new Error('mix failed with every mirror')
|
||||||
|
}
|
||||||
|
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
||||||
|
process.env.HEX_MIRROR = hexMirror
|
||||||
|
try {
|
||||||
|
return await exec(cmd, args)
|
||||||
|
} catch (err) {
|
||||||
|
core.info(
|
||||||
|
`mix failed with mirror ${process.env.HEX_MIRROR} with message ${err.message})`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return mixWithMirrors(cmd, args, hexMirrorsT)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function mix(shouldMix, what, hexMirrors) {
|
||||||
if (shouldMix === 'true') {
|
if (shouldMix === 'true') {
|
||||||
const cmd = 'mix'
|
const cmd = 'mix'
|
||||||
const args = [`local.${what}`, '--force']
|
const args = [`local.${what}`, '--force']
|
||||||
console.log(`##[group]Running ${cmd} ${args}`)
|
core.startGroup(`Running ${cmd} ${args}`)
|
||||||
await exec(cmd, args)
|
await mixWithMirrors(cmd, args, hexMirrors)
|
||||||
console.log('##[endgroup]')
|
core.endGroup()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,11 +126,11 @@ async function maybeInstallGleam(gleamSpec) {
|
|||||||
|
|
||||||
if (gleamSpec) {
|
if (gleamSpec) {
|
||||||
const gleamVersion = await getGleamVersion(gleamSpec)
|
const gleamVersion = await getGleamVersion(gleamSpec)
|
||||||
console.log(`##[group]Installing Gleam ${gleamVersion}`)
|
core.startGroup(`Installing Gleam ${gleamVersion}`)
|
||||||
await installer.installGleam(gleamVersion)
|
await installer.installGleam(gleamVersion)
|
||||||
core.setOutput('gleam-version', gleamVersion)
|
core.setOutput('gleam-version', gleamVersion)
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
|
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
|
||||||
console.log('##[endgroup]')
|
core.endGroup()
|
||||||
|
|
||||||
installed = true
|
installed = true
|
||||||
}
|
}
|
||||||
@@ -116,11 +148,11 @@ async function maybeInstallRebar3(rebar3Spec) {
|
|||||||
} else {
|
} else {
|
||||||
rebar3Version = await getRebar3Version(rebar3Spec)
|
rebar3Version = await getRebar3Version(rebar3Spec)
|
||||||
}
|
}
|
||||||
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
core.startGroup(`Installing rebar3 ${rebar3Version}`)
|
||||||
await installer.installRebar3(rebar3Version)
|
await installer.installRebar3(rebar3Version)
|
||||||
core.setOutput('rebar3-version', rebar3Version)
|
core.setOutput('rebar3-version', rebar3Version)
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`)
|
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`)
|
||||||
console.log('##[endgroup]')
|
core.endGroup()
|
||||||
|
|
||||||
installed = true
|
installed = true
|
||||||
}
|
}
|
||||||
@@ -128,21 +160,15 @@ async function maybeInstallRebar3(rebar3Spec) {
|
|||||||
return installed
|
return installed
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getOTPVersion(otpSpec0, osVersion) {
|
async function getOTPVersion(otpSpec0, osVersion, hexMirrors) {
|
||||||
const otpVersions = await getOTPVersions(osVersion)
|
const otpVersions = await getOTPVersions(osVersion, hexMirrors)
|
||||||
const otpSpec = otpSpec0.match(/^(OTP-|maint-)?([^ ]+)/)
|
let otpSpec = otpSpec0 // might be a branch (?)
|
||||||
let otpVersion
|
const otpVersion = getVersionFromSpec(
|
||||||
if (otpSpec[1] && !isStrictVersion()) {
|
otpSpec,
|
||||||
throw new Error(
|
Array.from(otpVersions.keys()).sort(),
|
||||||
`Requested Erlang/OTP version (${otpSpec0}) ` +
|
)
|
||||||
"should not contain 'OTP-, or maint-'",
|
if (isVersion(otpSpec0)) {
|
||||||
)
|
otpSpec = `OTP-${otpSpec0}` // ... it's a version!
|
||||||
}
|
|
||||||
if (otpSpec) {
|
|
||||||
otpVersion = getVersionFromSpec(
|
|
||||||
otpSpec[2],
|
|
||||||
Array.from(otpVersions.keys()).sort(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
if (otpVersion === null) {
|
if (otpVersion === null) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
@@ -154,60 +180,48 @@ async function getOTPVersion(otpSpec0, osVersion) {
|
|||||||
return otpVersions.get(otpVersion) // from the reference, for download
|
return otpVersions.get(otpVersion) // from the reference, for download
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getElixirVersion(exSpec0, otpVersion) {
|
async function getElixirVersion(exSpec0, otpVersion0, hexMirrors) {
|
||||||
const elixirVersions = await getElixirVersions()
|
const otpVersion = otpVersion0.match(/^([^-]+-)?(.+)$/)[2]
|
||||||
|
const otpVersionMajor = otpVersion.match(/^([^.]+).*$/)[1]
|
||||||
|
const elixirVersions = await getElixirVersions(hexMirrors)
|
||||||
const semverVersions = Array.from(elixirVersions.keys()).sort()
|
const semverVersions = Array.from(elixirVersions.keys()).sort()
|
||||||
|
const exSpec = exSpec0.replace(/-otp-.*$/, '')
|
||||||
const exSpec = exSpec0.match(/^v?(.+)(-otp-.+)/) || exSpec0.match(/^v?(.+)/)
|
const elixirVersionFromSpec = getVersionFromSpec(exSpec, semverVersions, true)
|
||||||
let elixirVersion
|
let elixirVersionForDownload = elixirVersionFromSpec
|
||||||
if (exSpec[2] && !isStrictVersion()) {
|
if (isVersion(otpVersionMajor)) {
|
||||||
throw new Error(
|
elixirVersionForDownload = `${elixirVersionFromSpec}-otp-${otpVersionMajor}`
|
||||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) ` +
|
|
||||||
"should not contain '-otp-...'",
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
if (exSpec) {
|
if (elixirVersionFromSpec === null) {
|
||||||
elixirVersion = getVersionFromSpec(exSpec[1], semverVersions)
|
|
||||||
}
|
|
||||||
if (!exSpec || elixirVersion === null) {
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Requested Elixir version (${exSpec0}) not found in version list ` +
|
`Requested Elixir version (${exSpec0}) not found in version list ` +
|
||||||
"(should you be using option 'version-type': 'strict'?)",
|
"(should you be using option 'version-type': 'strict'?)",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
const otpMatch = otpVersion.match(/^(?:OTP-)?([^.]+)/)
|
|
||||||
let elixirVersionWithOTP
|
|
||||||
|
|
||||||
if (elixirVersions.get(elixirVersion)) {
|
const elixirVersionComp = elixirVersions.get(elixirVersionFromSpec)
|
||||||
const otpVersionMajor = otpMatch[1]
|
if (
|
||||||
// We try for a version like `v1.4.5-otp-20`...
|
(elixirVersionComp && elixirVersionComp.includes(otpVersionMajor)) ||
|
||||||
if (elixirVersions.get(elixirVersion).includes(otpMatch[1])) {
|
!isVersion(otpVersionMajor)
|
||||||
// ... and it's available: use it!
|
) {
|
||||||
elixirVersionWithOTP = `${elixirVersion}-otp-${otpVersionMajor}`
|
core.info(
|
||||||
core.info(
|
`Using Elixir ${elixirVersionFromSpec} (built for Erlang/OTP ${otpVersionMajor})`,
|
||||||
`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?)',
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) not ` +
|
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion0}) not ` +
|
||||||
"found in version list (should you be using option 'version-type': 'strict'?)",
|
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?).' +
|
||||||
|
'Elixir and Erlang/OTP compatibility can be found at: ' +
|
||||||
|
'https://hexdocs.pm/elixir/compatibility-and-deprecations.html',
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return maybePrependWithV(elixirVersionWithOTP, elixirVersion)
|
return maybePrependWithV(elixirVersionForDownload)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getGleamVersion(gleamSpec0) {
|
async function getGleamVersion(gleamSpec0) {
|
||||||
const gleamSpec = gleamSpec0.match(/^v?(.+)/)
|
const gleamSpec = gleamSpec0.match(/^v?(.+)$/)
|
||||||
const gleamVersions = await getGleamVersions()
|
const gleamVersions = await getGleamVersions()
|
||||||
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions)
|
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions, true)
|
||||||
if (gleamVersion === null) {
|
if (gleamVersion === null) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
|
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
|
||||||
@@ -231,19 +245,19 @@ async function getRebar3Version(r3Spec) {
|
|||||||
return rebar3Version
|
return rebar3Version
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getOTPVersions(osVersion) {
|
async function getOTPVersions(osVersion, hexMirrors) {
|
||||||
|
let otpVersionsListings
|
||||||
let originListing
|
let originListing
|
||||||
let pageIdxs
|
|
||||||
if (process.platform === 'linux') {
|
if (process.platform === 'linux') {
|
||||||
originListing = `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt`
|
originListing = `/builds/otp/${osVersion}/builds.txt`
|
||||||
pageIdxs = [null]
|
otpVersionsListings = await getWithMirrors(originListing, hexMirrors)
|
||||||
} else if (process.platform === 'win32') {
|
} else if (process.platform === 'win32') {
|
||||||
originListing =
|
originListing =
|
||||||
'https://api.github.com/repos/erlang/otp/releases?per_page=100'
|
'https://api.github.com/repos/erlang/otp/releases?per_page=100'
|
||||||
pageIdxs = [1, 2, 3]
|
otpVersionsListings = await get(originListing, [1, 2, 3])
|
||||||
}
|
}
|
||||||
|
debugLog(`OTP versions listings from ${originListing}`, otpVersionsListings)
|
||||||
|
|
||||||
const otpVersionsListings = await get(originListing, pageIdxs)
|
|
||||||
const otpVersions = new Map()
|
const otpVersions = new Map()
|
||||||
|
|
||||||
if (process.platform === 'linux') {
|
if (process.platform === 'linux') {
|
||||||
@@ -251,13 +265,15 @@ async function getOTPVersions(osVersion) {
|
|||||||
.trim()
|
.trim()
|
||||||
.split('\n')
|
.split('\n')
|
||||||
.forEach((line) => {
|
.forEach((line) => {
|
||||||
const otpMatch = line.match(/^(OTP-|maint-)?([^ ]+)/)
|
const otpMatch = line
|
||||||
|
.match(/^([^ ]+)?( .+)/)[1]
|
||||||
|
.match(/^([^-]+-)?(.+)$/)
|
||||||
const otpVersion = otpMatch[2]
|
const otpVersion = otpMatch[2]
|
||||||
otpVersions.set(otpVersion, otpMatch[0]) // we keep the original for later reference
|
otpVersions.set(otpVersion, otpMatch[0]) // we keep the original for later reference
|
||||||
})
|
})
|
||||||
} else if (process.platform === 'win32') {
|
} else if (process.platform === 'win32') {
|
||||||
otpVersionsListings.forEach((otpVersionsListing) => {
|
otpVersionsListings.forEach((otpVersionsListing) => {
|
||||||
JSON.parse(otpVersionsListing)
|
jsonParseAsList(otpVersionsListing)
|
||||||
.map((x) => x.assets)
|
.map((x) => x.assets)
|
||||||
.flat()
|
.flat()
|
||||||
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
||||||
@@ -268,14 +284,13 @@ async function getOTPVersions(osVersion) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return otpVersions
|
return otpVersions
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getElixirVersions() {
|
async function getElixirVersions(hexMirrors) {
|
||||||
const elixirVersionsListings = await get(
|
const elixirVersionsListings = await getWithMirrors(
|
||||||
'https://repo.hex.pm/builds/elixir/builds.txt',
|
'/builds/elixir/builds.txt',
|
||||||
[null],
|
hexMirrors,
|
||||||
)
|
)
|
||||||
const otpVersionsForElixirMap = new Map()
|
const otpVersionsForElixirMap = new Map()
|
||||||
|
|
||||||
@@ -285,7 +300,7 @@ async function getElixirVersions() {
|
|||||||
.forEach((line) => {
|
.forEach((line) => {
|
||||||
const elixirMatch =
|
const elixirMatch =
|
||||||
line.match(/^v?(.+)-otp-([^ ]+)/) || line.match(/^v?([^ ]+)/)
|
line.match(/^v?(.+)-otp-([^ ]+)/) || line.match(/^v?([^ ]+)/)
|
||||||
const elixirVersion = elixirMatch[1]
|
const elixirVersion = maybePrependWithV(elixirMatch[1])
|
||||||
const otpVersion = elixirMatch[2]
|
const otpVersion = elixirMatch[2]
|
||||||
const otpVersions = otpVersionsForElixirMap.get(elixirVersion) || []
|
const otpVersions = otpVersionsForElixirMap.get(elixirVersion) || []
|
||||||
if (otpVersion) {
|
if (otpVersion) {
|
||||||
@@ -305,7 +320,7 @@ async function getGleamVersions() {
|
|||||||
)
|
)
|
||||||
const gleamVersionsListing = []
|
const gleamVersionsListing = []
|
||||||
resultJSONs.forEach((resultJSON) => {
|
resultJSONs.forEach((resultJSON) => {
|
||||||
JSON.parse(resultJSON)
|
jsonParseAsList(resultJSON)
|
||||||
.map((x) => x.tag_name)
|
.map((x) => x.tag_name)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach((v) => gleamVersionsListing.push(v))
|
.forEach((v) => gleamVersionsListing.push(v))
|
||||||
@@ -320,7 +335,7 @@ async function getRebar3Versions() {
|
|||||||
)
|
)
|
||||||
const rebar3VersionsListing = []
|
const rebar3VersionsListing = []
|
||||||
resultJSONs.forEach((resultJSON) => {
|
resultJSONs.forEach((resultJSON) => {
|
||||||
JSON.parse(resultJSON)
|
jsonParseAsList(resultJSON)
|
||||||
.map((x) => x.tag_name)
|
.map((x) => x.tag_name)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach((v) => rebar3VersionsListing.push(v))
|
.forEach((v) => rebar3VersionsListing.push(v))
|
||||||
@@ -329,10 +344,10 @@ async function getRebar3Versions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isStrictVersion() {
|
function isStrictVersion() {
|
||||||
return core.getInput('version-type', { required: false }) === 'strict'
|
return getInput('version-type', false) === 'strict'
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVersionFromSpec(spec, versions) {
|
function getVersionFromSpec(spec, versions, maybePrependWithV0) {
|
||||||
let version = null
|
let version = null
|
||||||
|
|
||||||
if (spec.match(/rc/) || isStrictVersion()) {
|
if (spec.match(/rc/) || isStrictVersion()) {
|
||||||
@@ -357,7 +372,16 @@ 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)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!versions.includes(v)) {
|
||||||
|
v = null
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybeCoerced(v) {
|
function maybeCoerced(v) {
|
||||||
@@ -420,63 +444,147 @@ function getRunnerOSVersion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function get(url0, pageIdxs) {
|
async function get(url0, pageIdxs) {
|
||||||
function getPage(pageIdx) {
|
async function getPage(pageIdx) {
|
||||||
return new Promise((resolve, reject) => {
|
const url = new URL(url0)
|
||||||
const url = new URL(url0)
|
const headers = {}
|
||||||
if (pageIdx !== null) {
|
const GithubToken = getInput('github-token', false)
|
||||||
url.searchParams.append('page', pageIdx)
|
|
||||||
}
|
if (GithubToken && url.host === 'api.github.com') {
|
||||||
https
|
headers.authorization = `Bearer ${GithubToken}`
|
||||||
.get(
|
}
|
||||||
url,
|
|
||||||
{
|
if (pageIdx !== null) {
|
||||||
headers: { 'user-agent': 'setup-beam' },
|
url.searchParams.append('page', pageIdx)
|
||||||
},
|
}
|
||||||
(res) => {
|
|
||||||
let data = ''
|
const httpClient = new http.HttpClient('setup-beam', [], {
|
||||||
res.on('data', (chunk) => {
|
allowRetries: true,
|
||||||
data += chunk
|
maxRetries: 3,
|
||||||
})
|
|
||||||
res.on('end', () => {
|
|
||||||
if (res.statusCode >= 400 && res.statusCode <= 599) {
|
|
||||||
reject(
|
|
||||||
new Error(
|
|
||||||
`Got ${res.statusCode} from ${url}. Exiting with error`,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
resolve(data)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.on('error', (err) => {
|
|
||||||
reject(err)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const response = await httpClient.get(url, headers)
|
||||||
|
|
||||||
|
if (response.statusCode >= 400 && response.statusCode <= 599) {
|
||||||
|
throw new Error(
|
||||||
|
`Got ${response.statusCode} from ${url}. Exiting with error`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.readBody()
|
||||||
}
|
}
|
||||||
let ret
|
|
||||||
if (pageIdxs[0] === null) {
|
if (pageIdxs[0] === null) {
|
||||||
ret = getPage(null)
|
return getPage(null)
|
||||||
} else {
|
|
||||||
ret = Promise.all(pageIdxs.map((pageIdx) => getPage(pageIdx)))
|
|
||||||
}
|
}
|
||||||
return ret
|
return Promise.all(pageIdxs.map(getPage))
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybePrependWithV(versionToPrepend, specVersion) {
|
async function getWithMirrors(resourcePath, hexMirrors) {
|
||||||
const digitStart = /^\d+/
|
if (hexMirrors.length === 0) {
|
||||||
let v = versionToPrepend
|
throw new Error(`Could not fetch ${resourcePath} from any hex.pm mirror`)
|
||||||
if (digitStart.test(specVersion)) {
|
}
|
||||||
v = `v${versionToPrepend}`
|
const [hexMirror, ...hexMirrorsT] = hexMirrors
|
||||||
|
try {
|
||||||
|
return await get(`${hexMirror}${resourcePath}`, [null])
|
||||||
|
} catch (err) {
|
||||||
|
core.info(`get failed for URL ${hexMirror}${resourcePath}`)
|
||||||
|
}
|
||||||
|
return getWithMirrors(resourcePath, hexMirrorsT)
|
||||||
|
}
|
||||||
|
|
||||||
|
function maybePrependWithV(v) {
|
||||||
|
if (isVersion(v)) {
|
||||||
|
return `v${v.replace('v', '')}`
|
||||||
}
|
}
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isVersion(v) {
|
||||||
|
return /^v?\d+/.test(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInput(inputName, required, alternativeName, alternatives) {
|
||||||
|
const alternativeValue = (alternatives || new Map()).get(alternativeName)
|
||||||
|
let input = core.getInput(inputName, {
|
||||||
|
required: alternativeValue ? false : required,
|
||||||
|
})
|
||||||
|
// We can't have both input and alternativeValue set
|
||||||
|
if (input && alternativeValue) {
|
||||||
|
throw new Error(
|
||||||
|
`Found input ${inputName}=${input} (from the YML) \
|
||||||
|
alongside ${alternativeName}=${alternativeValue} \
|
||||||
|
(from the version file). You must choose one or the other.`,
|
||||||
|
)
|
||||||
|
} else if (!input) {
|
||||||
|
input = alternativeValue
|
||||||
|
}
|
||||||
|
return input
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseVersionFile(versionFilePath0) {
|
||||||
|
const versionFilePath = path.join(
|
||||||
|
process.env.GITHUB_WORKSPACE,
|
||||||
|
versionFilePath0,
|
||||||
|
)
|
||||||
|
if (!fs.existsSync(versionFilePath)) {
|
||||||
|
throw new Error(
|
||||||
|
`The specified version file, ${versionFilePath0}, does not exist`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
core.startGroup(`Parsing version file at ${versionFilePath0}`)
|
||||||
|
const appVersions = new Map()
|
||||||
|
const versions = fs.readFileSync(versionFilePath, 'utf8')
|
||||||
|
// For the time being we parse .tool-versions
|
||||||
|
// If we ever start parsing something else, this should
|
||||||
|
// become default in a new option named e.g. version-file-type
|
||||||
|
versions.split('\n').forEach((line) => {
|
||||||
|
const appVersion = line.match(/^([^ ]+)[ ]+([^ #]+)/)
|
||||||
|
if (appVersion) {
|
||||||
|
const app = appVersion[1]
|
||||||
|
if (['erlang', 'elixir', 'gleam', 'rebar'].includes(app)) {
|
||||||
|
const [, , version] = appVersion
|
||||||
|
core.info(`Consuming ${app} at version ${version}`)
|
||||||
|
appVersions.set(app, version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (!appVersions.size) {
|
||||||
|
core.info('There was apparently nothing to consume')
|
||||||
|
} else {
|
||||||
|
core.info('... done!')
|
||||||
|
}
|
||||||
|
core.endGroup()
|
||||||
|
|
||||||
|
return appVersions
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonParseAsList(maybeJson) {
|
||||||
|
try {
|
||||||
|
const obj = JSON.parse(maybeJson)
|
||||||
|
if (!Array.isArray(obj)) {
|
||||||
|
throw new Error('expected a list!')
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
} catch (exc) {
|
||||||
|
throw new Error(
|
||||||
|
`Got an exception when trying to parse non-JSON list ${maybeJson}: ${exc}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function debugLog(groupName, message) {
|
||||||
|
if (process.env.RUNNER_DEBUG) {
|
||||||
|
core.startGroup(`Debugging for ${groupName}`)
|
||||||
|
core.debug(message)
|
||||||
|
core.endGroup()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getOTPVersion,
|
getOTPVersion,
|
||||||
getElixirVersion,
|
getElixirVersion,
|
||||||
getGleamVersion,
|
getGleamVersion,
|
||||||
getRebar3Version,
|
getRebar3Version,
|
||||||
getVersionFromSpec,
|
getVersionFromSpec,
|
||||||
|
parseVersionFile,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
const { problemMatcher } = require('../.github/elixir-matchers.json')
|
const core = require('@actions/core')
|
||||||
|
const { problemMatcher } = require('../matchers/elixir-matchers.json')
|
||||||
|
|
||||||
async function all() {
|
async function all() {
|
||||||
await testElixirMixCompileError()
|
await testElixirMixCompileError()
|
||||||
await testElixirMixCompileWarning()
|
await testElixirMixCompileWarning()
|
||||||
await testElixirMixTestFailure()
|
await testElixirMixTestFailure()
|
||||||
await testElixirCredoOutputDefault()
|
await testElixirCredoOutputDefault()
|
||||||
await testElixirDialyzerOutputDefault()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testElixirMixCompileError() {
|
async function testElixirMixCompileError() {
|
||||||
@@ -74,27 +74,9 @@ async function testElixirCredoOutputDefault() {
|
|||||||
assert.equal(column, '7')
|
assert.equal(column, '7')
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testElixirDialyzerOutputDefault() {
|
|
||||||
const [messagePattern, filePattern] = problemMatcher.find(
|
|
||||||
({ owner }) => owner === 'elixir-dialyzerOutputDefault',
|
|
||||||
).pattern
|
|
||||||
|
|
||||||
const firstOutput = 'lib/test.ex:15:invalid_contract'
|
|
||||||
const secondOutput =
|
|
||||||
'The @spec for the function does not match the success typing of the function.'
|
|
||||||
|
|
||||||
const [, file, line, code] = firstOutput.match(messagePattern.regexp)
|
|
||||||
assert.equal(file, 'lib/test.ex')
|
|
||||||
assert.equal(line, '15')
|
|
||||||
assert.equal(code, 'invalid_contract')
|
|
||||||
|
|
||||||
const [, message] = secondOutput.match(filePattern.regexp)
|
|
||||||
assert.equal(message, secondOutput)
|
|
||||||
}
|
|
||||||
|
|
||||||
all()
|
all()
|
||||||
.then(() => process.exit(0))
|
.then(() => process.exit(0))
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err)
|
core.error(err)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
})
|
})
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/target/
|
||||||
|
main
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rust_rebar3_cmd"
|
||||||
|
version = "0.1.0"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "rust_rebar3_cmd"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
use std::env;
|
||||||
|
use std::process;
|
||||||
|
use std::string;
|
||||||
|
|
||||||
|
// an example function...
|
||||||
|
fn main() {
|
||||||
|
let key = "PATH";
|
||||||
|
match env::var(key) {
|
||||||
|
Ok(val) => println!("{key}: {val:?}"),
|
||||||
|
Err(e) => println!("couldn't interpret {key}: {e}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn rebar3_cmd_version() -> Result<String, string::FromUtf8Error> {
|
||||||
|
println!("going for rebar3.cmd");
|
||||||
|
let output = process::Command::new("rebar3.cmd")
|
||||||
|
.arg("version")
|
||||||
|
.output()
|
||||||
|
.expect("error");
|
||||||
|
return String::from_utf8(output.stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
rebar3_cmd_version().unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
simulateInput('otp-version', '23.2')
|
simulateInput('otp-version', '25.1.2')
|
||||||
simulateInput('elixir-version', '1.11')
|
simulateInput('elixir-version', '1.14.2')
|
||||||
simulateInput('rebar3-version', '3.14')
|
simulateInput('rebar3-version', '3.20')
|
||||||
simulateInput('install-rebar', 'true')
|
simulateInput('install-rebar', 'true')
|
||||||
simulateInput('install-hex', 'true')
|
simulateInput('install-hex', 'true')
|
||||||
|
simulateInput('github-token', process.env.GITHUB_TOKEN)
|
||||||
|
simulateInput('hexpm-mirrors', ['https://builds.hex.pm'])
|
||||||
|
|
||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
|
const fs = require('fs')
|
||||||
|
const core = require('@actions/core')
|
||||||
const setupBeam = require('../src/setup-beam')
|
const setupBeam = require('../src/setup-beam')
|
||||||
const installer = require('../src/installer')
|
const installer = require('../src/installer')
|
||||||
|
|
||||||
@@ -20,6 +24,8 @@ async function all() {
|
|||||||
await testRebar3Versions()
|
await testRebar3Versions()
|
||||||
|
|
||||||
await testGetVersionFromSpec()
|
await testGetVersionFromSpec()
|
||||||
|
|
||||||
|
await testParseVersionFile()
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testFailInstallOTP() {
|
async function testFailInstallOTP() {
|
||||||
@@ -98,48 +104,49 @@ async function testOTPVersions() {
|
|||||||
let expected
|
let expected
|
||||||
let spec
|
let spec
|
||||||
let osVersion
|
let osVersion
|
||||||
|
const hexMirrors = ['https://repo.hex.pm', 'https://cdn.jsdelivr.net/hex']
|
||||||
|
|
||||||
if (process.platform === 'linux') {
|
if (process.platform === 'linux') {
|
||||||
spec = '19.3.x'
|
spec = '19.3.x'
|
||||||
osVersion = 'ubuntu-16.04'
|
osVersion = 'ubuntu-16.04'
|
||||||
expected = 'OTP-19.3.6.13'
|
expected = 'OTP-19.3.6.13'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '^19.3.6'
|
spec = '^19.3.6'
|
||||||
osVersion = 'ubuntu-16.04'
|
osVersion = 'ubuntu-16.04'
|
||||||
expected = 'OTP-19.3.6.13'
|
expected = 'OTP-19.3.6.13'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '^19.3'
|
spec = '^19.3'
|
||||||
osVersion = 'ubuntu-18.04'
|
osVersion = 'ubuntu-18.04'
|
||||||
expected = 'OTP-19.3.6.13'
|
expected = 'OTP-19.3.6.13'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '20'
|
spec = '20'
|
||||||
osVersion = 'ubuntu-20.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-20.3.8.26'
|
expected = 'OTP-20.3.8.26'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '20.x'
|
spec = '20.x'
|
||||||
osVersion = 'ubuntu-20.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-20.3.8.26'
|
expected = 'OTP-20.3.8.26'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '20.0'
|
spec = '20.0'
|
||||||
osVersion = 'ubuntu-20.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-20.0.5'
|
expected = 'OTP-20.0.5'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '20.0.x'
|
spec = '20.0.x'
|
||||||
osVersion = 'ubuntu-20.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-20.0.5'
|
expected = 'OTP-20.0.5'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,19 +154,19 @@ async function testOTPVersions() {
|
|||||||
spec = '24.0.1'
|
spec = '24.0.1'
|
||||||
osVersion = 'windows-latest'
|
osVersion = 'windows-latest'
|
||||||
expected = '24.0.1'
|
expected = '24.0.1'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '23.2.x'
|
spec = '23.2.x'
|
||||||
osVersion = 'windows-2016'
|
osVersion = 'windows-2016'
|
||||||
expected = '23.2.7'
|
expected = '23.2.7'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '23.0'
|
spec = '23.0'
|
||||||
osVersion = 'windows-2019'
|
osVersion = 'windows-2019'
|
||||||
expected = '23.0.4'
|
expected = '23.0.4'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -169,48 +176,58 @@ async function testElixirVersions() {
|
|||||||
let expected
|
let expected
|
||||||
let spec
|
let spec
|
||||||
let otpVersion
|
let otpVersion
|
||||||
|
let before
|
||||||
|
const hexMirrors = ['https://repo.hex.pm']
|
||||||
|
|
||||||
spec = '1.1.x'
|
spec = '1.1.x'
|
||||||
otpVersion = 'OTP-17'
|
otpVersion = 'OTP-17'
|
||||||
expected = 'v1.1.1-otp-17'
|
expected = 'v1.1.1-otp-17'
|
||||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '1.10.4'
|
spec = '1.10.4'
|
||||||
otpVersion = 'OTP-23'
|
otpVersion = 'OTP-23'
|
||||||
expected = 'v1.10.4-otp-23'
|
expected = 'v1.10.4-otp-23'
|
||||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '1.12.1'
|
spec = '1.12.1'
|
||||||
otpVersion = 'OTP-24.0.2'
|
otpVersion = 'OTP-24.0.2'
|
||||||
expected = 'v1.12.1-otp-24'
|
expected = 'v1.12.1-otp-24'
|
||||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
|
spec = '1.14.0'
|
||||||
|
otpVersion = 'master'
|
||||||
|
expected = 'v1.14.0'
|
||||||
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
|
assert.deepStrictEqual(got, expected)
|
||||||
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = 'v1.11.0-rc.0'
|
spec = 'v1.11.0-rc.0'
|
||||||
otpVersion = 'OTP-23'
|
otpVersion = 'OTP-23'
|
||||||
expected = 'v1.11.0-rc.0-otp-23'
|
expected = 'v1.11.0-rc.0-otp-23'
|
||||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = 'v1.11.0'
|
spec = 'v1.11.0'
|
||||||
otpVersion = '22.3.4.2'
|
otpVersion = '22.3.4.2'
|
||||||
expected = 'v1.11.0-otp-22'
|
expected = 'v1.11.0-otp-22'
|
||||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = 'master'
|
spec = 'main'
|
||||||
otpVersion = '23.1'
|
otpVersion = '23.1'
|
||||||
expected = 'master-otp-23'
|
expected = 'main-otp-23'
|
||||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testGleamVersions() {
|
async function testGleamVersions() {
|
||||||
@@ -231,13 +248,13 @@ async function testGleamVersions() {
|
|||||||
got = await setupBeam.getGleamVersion(spec, otpVersion)
|
got = await setupBeam.getGleamVersion(spec, otpVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
const before = simulateInput('version-type', 'strict')
|
||||||
spec = 'v0.14.0-rc2'
|
spec = 'v0.14.0-rc2'
|
||||||
otpVersion = 'OTP-22'
|
otpVersion = 'OTP-22'
|
||||||
expected = 'v0.14.0-rc2'
|
expected = 'v0.14.0-rc2'
|
||||||
got = await setupBeam.getGleamVersion(spec, otpVersion)
|
got = await setupBeam.getGleamVersion(spec, otpVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testRebar3Versions() {
|
async function testRebar3Versions() {
|
||||||
@@ -265,6 +282,7 @@ async function testGetVersionFromSpec() {
|
|||||||
let got
|
let got
|
||||||
let expected
|
let expected
|
||||||
let spec
|
let spec
|
||||||
|
let before
|
||||||
const versions = [
|
const versions = [
|
||||||
'3.2.30.5',
|
'3.2.30.5',
|
||||||
'3.2.3.5',
|
'3.2.3.5',
|
||||||
@@ -306,19 +324,19 @@ async function testGetVersionFromSpec() {
|
|||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = '1'
|
spec = '1'
|
||||||
expected = '1'
|
expected = '1'
|
||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = '1.0'
|
spec = '1.0'
|
||||||
expected = '1.0'
|
expected = '1.0'
|
||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
spec = '2'
|
spec = '2'
|
||||||
expected = '2.10'
|
expected = '2.10'
|
||||||
@@ -345,12 +363,12 @@ async function testGetVersionFromSpec() {
|
|||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = '24.0-rc3'
|
spec = '24.0-rc3'
|
||||||
expected = '24.0-rc3'
|
expected = '24.0-rc3'
|
||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
spec = '24.0-rc2'
|
spec = '24.0-rc2'
|
||||||
expected = '24.0-rc2'
|
expected = '24.0-rc2'
|
||||||
@@ -377,33 +395,92 @@ async function testGetVersionFromSpec() {
|
|||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = 'master'
|
spec = 'master'
|
||||||
expected = 'master'
|
expected = 'master'
|
||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
spec = 'master'
|
spec = 'master'
|
||||||
expected = 'master'
|
expected = 'master'
|
||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = '22.3.4.2'
|
spec = '22.3.4.2'
|
||||||
expected = '22.3.4.2'
|
expected = '22.3.4.2'
|
||||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', 'loose')
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
|
before = simulateInput('version-type', 'strict')
|
||||||
|
spec = '22.3.4.3'
|
||||||
|
expected = null
|
||||||
|
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||||
|
assert.deepStrictEqual(got, expected)
|
||||||
|
simulateInput('version-type', before)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function testParseVersionFile() {
|
||||||
|
const otpVersion = unsimulateInput('otp-version')
|
||||||
|
const elixirVersion = unsimulateInput('elixir-version')
|
||||||
|
const gleamVersion = unsimulateInput('gleam-version')
|
||||||
|
const rebar3Version = unsimulateInput('rebar3-version')
|
||||||
|
|
||||||
|
const erlang = '25.1.1'
|
||||||
|
const elixir = '1.14.1'
|
||||||
|
const gleam = '0.23.0'
|
||||||
|
const rebar3 = '3.16.0'
|
||||||
|
const toolVersions = `# a comment
|
||||||
|
erlang ${erlang}# comment, no space
|
||||||
|
elixir ${elixir} # comment, with space
|
||||||
|
not-gleam 0.23 # not picked up
|
||||||
|
gleam ${gleam}
|
||||||
|
rebar ${rebar3}`
|
||||||
|
const filename = 'test/.tool-versions'
|
||||||
|
fs.writeFileSync(filename, toolVersions)
|
||||||
|
process.env.GITHUB_WORKSPACE = ''
|
||||||
|
const appVersions = setupBeam.parseVersionFile(filename)
|
||||||
|
assert.strictEqual(appVersions.get('erlang'), erlang)
|
||||||
|
assert.strictEqual(appVersions.get('elixir'), elixir)
|
||||||
|
|
||||||
|
assert.ok(async () => {
|
||||||
|
await installer.installOTP(erlang)
|
||||||
|
})
|
||||||
|
assert.ok(async () => {
|
||||||
|
await installer.installElixir(elixir)
|
||||||
|
})
|
||||||
|
assert.ok(async () => {
|
||||||
|
await installer.installGleam(gleam)
|
||||||
|
})
|
||||||
|
assert.ok(async () => {
|
||||||
|
await installer.installRebar3(rebar3)
|
||||||
|
})
|
||||||
|
|
||||||
|
simulateInput('otp-version', otpVersion)
|
||||||
|
simulateInput('elixir-version', elixirVersion)
|
||||||
|
simulateInput('gleam-version', gleamVersion)
|
||||||
|
simulateInput('rebar3-version', rebar3Version)
|
||||||
|
}
|
||||||
|
|
||||||
|
function unsimulateInput(key) {
|
||||||
|
return simulateInput(key, '')
|
||||||
}
|
}
|
||||||
|
|
||||||
function simulateInput(key, value) {
|
function simulateInput(key, value) {
|
||||||
process.env[`INPUT_${key.replace(/ /g, '_').toUpperCase()}`] = value
|
const before = process.env[input(key)]
|
||||||
|
process.env[input(key)] = value
|
||||||
|
return before
|
||||||
|
}
|
||||||
|
|
||||||
|
function input(key) {
|
||||||
|
return `INPUT_${key.replace(/ /g, '_').toUpperCase()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
all()
|
all()
|
||||||
.then(() => process.exit(0))
|
.then(() => process.exit(0))
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err)
|
core.error(err)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
})
|
})
|
||||||
Reference in New Issue
Block a user