mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-22 22:56: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:
|
||||
indent: ["warn", 2]
|
||||
max-len: ["warn", 100]
|
||||
no-console: 0
|
||||
no-undef: "error"
|
||||
no-unused-vars: ["error", {"varsIgnorePattern": "^_"}]
|
||||
no-use-before-define: 0
|
||||
|
||||
@@ -6,16 +6,18 @@ on:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
types: [opened, synchronize]
|
||||
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
jobs:
|
||||
check_integrity:
|
||||
name: Expected local npm actions
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run: npm install -g npm
|
||||
@@ -28,25 +30,31 @@ jobs:
|
||||
- run: npm run yamllint
|
||||
- run: npm run jslint
|
||||
- name: Check if build left artifacts
|
||||
run: git diff --exit-code
|
||||
run: git diff --exit-code --ignore-space-at-eol
|
||||
|
||||
unit_tests_ubuntu:
|
||||
name: Unit tests (Ubuntu)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
- name: .tool-versions test
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
with:
|
||||
version-file: test/.tool-versions
|
||||
version-type: strict
|
||||
|
||||
unit_tests_windows:
|
||||
name: Unit tests (Windows)
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- 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:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
types: [opened, synchronize]
|
||||
|
||||
jobs:
|
||||
integration_test:
|
||||
@@ -21,6 +20,13 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
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'
|
||||
elixir-version: '1'
|
||||
rebar3-version: '3'
|
||||
@@ -45,20 +51,10 @@ jobs:
|
||||
- otp-version: '24'
|
||||
rebar3-version: 'nightly'
|
||||
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'
|
||||
otp-version: '20'
|
||||
rebar3-version: '3.6.0'
|
||||
os: 'ubuntu-18.04'
|
||||
rebar3-version: '3.15.0'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.4'
|
||||
otp-version: '20'
|
||||
rebar3-version: '3.11'
|
||||
@@ -66,7 +62,7 @@ jobs:
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
@@ -74,7 +70,7 @@ jobs:
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
@@ -82,11 +78,11 @@ jobs:
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.13.4'
|
||||
otp-version: '25.0.2'
|
||||
rebar3-version: '3.19'
|
||||
os: 'ubuntu-18.04'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
@@ -113,26 +109,33 @@ jobs:
|
||||
- elixir-version: 'master'
|
||||
otp-version: '23.1'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'master'
|
||||
- elixir-version: 'main'
|
||||
otp-version: '25'
|
||||
os: 'ubuntu-20.04'
|
||||
version-type: 'strict'
|
||||
- gleam-version: 'nightly'
|
||||
otp-version: '24'
|
||||
- gleam-version: '0.23'
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.23.0-rc1'
|
||||
otp-version: '24'
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.23.0-rc1'
|
||||
otp-version: false
|
||||
os: 'ubuntu-latest'
|
||||
disable_problem_matchers: true
|
||||
- gleam-version: '0.22.0' # Version with Gleam's old archive naming convention
|
||||
otp-version: '24'
|
||||
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:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -162,25 +165,30 @@ jobs:
|
||||
if: ${{matrix.combo.elixir-version}}
|
||||
- name: Run Elixir/Mix project tests
|
||||
run: |
|
||||
cd test-projects/elixir_mix
|
||||
cd test/projects/elixir_mix
|
||||
mix deps.get
|
||||
mix test
|
||||
if: ${{matrix.combo.elixir-version}}
|
||||
- name: Run Erlang/rebar3 project tests
|
||||
run: |
|
||||
cd test-projects/erlang_rebar3
|
||||
cd test/projects/erlang_rebar3
|
||||
rebar3 ct
|
||||
if: ${{matrix.combo.rebar3-version}}
|
||||
- name: Type check Gleam project (without installing Erlang/OTP)
|
||||
- name: Format Gleam project (without installing Erlang/OTP)
|
||||
run: |
|
||||
cd test-projects/gleam_gleam
|
||||
gleam check
|
||||
cd test/projects/gleam_gleam
|
||||
gleam format
|
||||
if: ${{ matrix.combo.gleam-version && !matrix.combo.otp-version }}
|
||||
- name: Run Gleam project tests (without `rebar3`)
|
||||
run: |
|
||||
cd test-projects/gleam_gleam
|
||||
cd test/projects/gleam_gleam
|
||||
gleam test
|
||||
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:
|
||||
name: Environment variables
|
||||
runs-on: ${{matrix.combo.os}}
|
||||
@@ -194,7 +202,7 @@ jobs:
|
||||
rebar3-version: 'nightly'
|
||||
os: 'ubuntu-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -206,7 +214,7 @@ jobs:
|
||||
- run: env
|
||||
- name: List environment variables
|
||||
run: |
|
||||
echo "${{env.INSTALL_DIR_FOR_ELIXIR}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_GLEAM}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_OTP}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_REBAR3}}"
|
||||
[ -n "${INSTALL_DIR_FOR_ELIXIR}" ] && echo "${INSTALL_DIR_FOR_ELIXIR}"
|
||||
[ -n "${INSTALL_DIR_FOR_GLEAM}" ] && echo "${INSTALL_DIR_FOR_GLEAM}"
|
||||
[ -n "${INSTALL_DIR_FOR_OTP}" ] && echo "${INSTALL_DIR_FOR_OTP}"
|
||||
[ -n "${INSTALL_DIR_FOR_REBAR3}" ] && echo "${INSTALL_DIR_FOR_REBAR3}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: update_3rd_party_licenses
|
||||
name: Update 3rd party licenses (automation)
|
||||
|
||||
on:
|
||||
schedule:
|
||||
@@ -11,11 +11,11 @@ jobs:
|
||||
name: Update 3rd party licenses
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
- run:
|
||||
./.github/workflows/update_3rd_party_licenses.sh
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -6,8 +6,7 @@ on:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
types: [opened, synchronize]
|
||||
|
||||
jobs:
|
||||
integration_test:
|
||||
@@ -37,16 +36,23 @@ jobs:
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
os: 'windows-latest'
|
||||
- elixir-version: 'v1.11'
|
||||
- elixir-version: 'v1.13'
|
||||
otp-version: '24'
|
||||
rebar3-version: '3.15'
|
||||
os: 'windows-latest'
|
||||
- gleam-version: '0.19.0-rc3'
|
||||
otp-version: '24'
|
||||
os: 'windows-latest'
|
||||
- gleam-version: '0.23.0-rc1'
|
||||
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'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -65,6 +71,17 @@ jobs:
|
||||
if: ${{matrix.combo.gleam-version}}
|
||||
- name: rebar3 version (action)
|
||||
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)
|
||||
run: |
|
||||
mix -v
|
||||
@@ -73,15 +90,20 @@ jobs:
|
||||
if: ${{matrix.combo.elixir-version}}
|
||||
- name: Run Elixir/Mix project tests
|
||||
run: |
|
||||
cd test-projects/elixir_mix
|
||||
cd test/projects/elixir_mix
|
||||
mix deps.get
|
||||
mix test
|
||||
if: ${{matrix.combo.elixir-version}}
|
||||
- name: Run Erlang/rebar3 project tests
|
||||
run: |
|
||||
cd test-projects/erlang_rebar3
|
||||
cd test/projects/erlang_rebar3
|
||||
rebar3 ct
|
||||
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:
|
||||
name: Environment variables
|
||||
runs-on: ${{matrix.combo.os}}
|
||||
@@ -95,7 +117,7 @@ jobs:
|
||||
rebar3-version: 'nightly'
|
||||
os: 'windows-latest'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use erlef/setup-beam
|
||||
id: setup-beam
|
||||
uses: ./
|
||||
@@ -107,7 +129,8 @@ jobs:
|
||||
- run: env
|
||||
- name: List environment variables
|
||||
run: |
|
||||
echo "${{env.INSTALL_DIR_FOR_ELIXIR}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_GLEAM}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_OTP}}"
|
||||
echo "${{env.INSTALL_DIR_FOR_REBAR3}}"
|
||||
[ -n "${INSTALL_DIR_FOR_ELIXIR}" ] && echo "${INSTALL_DIR_FOR_ELIXIR}"
|
||||
[ -n "${INSTALL_DIR_FOR_GLEAM}" ] && echo "${INSTALL_DIR_FOR_GLEAM}"
|
||||
[ -n "${INSTALL_DIR_FOR_OTP}" ] && echo "${INSTALL_DIR_FOR_OTP}"
|
||||
[ -n "${INSTALL_DIR_FOR_REBAR3}" ] && echo "${INSTALL_DIR_FOR_REBAR3}"
|
||||
shell: bash
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
node_modules/**
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
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
|
||||
|
||||
@@ -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 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:
|
||||
|
||||
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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 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:
|
||||
|
||||
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
|
||||
|
||||
@@ -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:
|
||||
|
||||
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
|
||||
|
||||
Copyright (c) 2020 Inspect JS
|
||||
Copyright (c) 2021 Zilong Yao
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
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:
|
||||
|
||||
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
|
||||
By: The Babel Team
|
||||
@@ -4088,7 +4198,7 @@ License: MIT
|
||||
|
||||
----------------------------------------
|
||||
|
||||
### @glimmer/syntax@v0.84.1
|
||||
### @glimmer/syntax@v0.84.2
|
||||
|
||||
License: MIT
|
||||
|
||||
@@ -4114,7 +4224,7 @@ License: MIT
|
||||
|
||||
----------------------------------------
|
||||
|
||||
### @glimmer/util@v0.84.1
|
||||
### @glimmer/util@v0.84.2
|
||||
|
||||
License: MIT
|
||||
|
||||
@@ -4253,7 +4363,7 @@ License: MIT
|
||||
|
||||
----------------------------------------
|
||||
|
||||
### @typescript-eslint/types@v5.17.0
|
||||
### @typescript-eslint/types@v5.27.0
|
||||
|
||||
License: MIT
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
By: Ika
|
||||
@@ -7299,58 +7614,20 @@ By: Ika
|
||||
|
||||
----------------------------------------
|
||||
|
||||
### lodash@v4.17.21
|
||||
### locate-path@v5.0.0
|
||||
|
||||
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,
|
||||
> DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
|
||||
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
>
|
||||
> This software consists of voluntary contributions made by many
|
||||
> individuals. For exact contribution history, see the revision history
|
||||
> available at https://github.com/lodash/lodash
|
||||
> 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 following license applies to all parts of this software except as
|
||||
> documented below:
|
||||
> The above copyright notice and this permission notice shall be included in all copies or substantial portions of 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.
|
||||
> 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.
|
||||
|
||||
----------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
License: MIT
|
||||
@@ -8931,7 +9379,7 @@ Repository: <https://github.com/ajafff/tsutils>
|
||||
|
||||
----------------------------------------
|
||||
|
||||
### typescript@v4.6.3
|
||||
### typescript@v4.7.2
|
||||
|
||||
License: Apache-2.0
|
||||
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
|
||||
|
||||
@@ -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:
|
||||
|
||||
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)
|
||||
|
||||
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
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# 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),
|
||||
available under the [MIT license](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/LICENSE.md):
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<!-- markdownlint-disable MD013 -->
|
||||
# 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-img]: https://github.com/erlef/setup-beam/workflows/action/badge.svg
|
||||
[ubuntu]: https://github.com/erlef/setup-beam
|
||||
[ubuntu-img]: https://github.com/erlef/setup-beam/workflows/ubuntu/badge.svg
|
||||
[windows]: https://github.com/erlef/setup-beam
|
||||
[windows-img]: https://github.com/erlef/setup-beam/workflows/windows/badge.svg
|
||||
[action]: https://github.com/erlef/setup-beam/actions/workflows/action.yml
|
||||
[action-img]: https://github.com/erlef/setup-beam/actions/workflows/action.yml/badge.svg
|
||||
[ubuntu]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml
|
||||
[ubuntu-img]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml/badge.svg
|
||||
[windows]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml
|
||||
[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
|
||||
workflow by:
|
||||
@@ -16,9 +16,11 @@ workflow by:
|
||||
- optionally, installing [Gleam](https://gleam.run/)
|
||||
- optionally, installing [`rebar3`](https://www.rebar3.org/)
|
||||
- optionally, installing [`hex`](https://hex.pm/)
|
||||
- optionally, opting for strict or loose version matching
|
||||
- optionally, having
|
||||
[problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) show
|
||||
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.
|
||||
|
||||
@@ -81,11 +83,36 @@ jobs:
|
||||
env:
|
||||
ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- 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)
|
||||
|
||||
```yaml
|
||||
@@ -94,14 +121,14 @@ on: push
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
name: OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}}
|
||||
strategy:
|
||||
matrix:
|
||||
otp: ['20.3', '21.3', '22.2']
|
||||
elixir: ['1.8.2', '1.9.4']
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: ${{matrix.otp}}
|
||||
@@ -118,14 +145,14 @@ on: push
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
name: Erlang/OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}}
|
||||
strategy:
|
||||
matrix:
|
||||
otp: ['20.3', '21.3', '22.2']
|
||||
rebar3: ['3.14.1', '3.14.3']
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: ${{matrix.otp}}
|
||||
@@ -143,7 +170,7 @@ jobs:
|
||||
test:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '24'
|
||||
@@ -161,7 +188,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '24'
|
||||
@@ -179,7 +206,7 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: false
|
||||
@@ -189,6 +216,47 @@ jobs:
|
||||
|
||||
**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
|
||||
|
||||
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
|
||||
icon: code
|
||||
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:
|
||||
description: Version range or exact version of Erlang/OTP to use,
|
||||
or false when installing only Gleam without OTP
|
||||
required: true
|
||||
elixir-version:
|
||||
description: Version range or exact version of Elixir to use
|
||||
gleam-version:
|
||||
@@ -31,8 +39,16 @@ inputs:
|
||||
to guess versions based on semver rules
|
||||
default: loose
|
||||
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
|
||||
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:
|
||||
elixir-version:
|
||||
description: Exact version of Elixir that was installed
|
||||
|
||||
Vendored
-16
@@ -57,22 +57,6 @@
|
||||
"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
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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}
|
||||
|
||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||
$FILE_OUTPUT="gleam.zip"
|
||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
||||
|
||||
function Version-Greater-Than([string]${THIS_ONE}, [string]${REFERENCE}) {
|
||||
$THIS_ONE=$THIS_ONE.replace('v', '')
|
||||
$THIS_ONE=$THIS_ONE.replace('rc', '')
|
||||
$THIS_ONE=$THIS_ONE.replace('-', '')
|
||||
return [version]${THIS_ONE} -gt [version]${REFERENCE}
|
||||
}
|
||||
|
||||
function Uses-LLVM-Triplets([string]${THIS_VSN}) {
|
||||
return "${THIS_VSN}" -eq "nightly" -or (Version-Greater-Than "${THIS_VSN}" "0.22.1")
|
||||
}
|
||||
|
||||
if (Uses-LLVM-Triplets "$VSN") {
|
||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||
} else {
|
||||
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
|
||||
}
|
||||
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||
$ProgressPreference="Continue"
|
||||
|
||||
Vendored
+4
-3
@@ -9,12 +9,13 @@ FILE_OUTPUT=gleam.tar.gz
|
||||
DIR_FOR_BIN=.setup-beam/gleam
|
||||
|
||||
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() {
|
||||
local version="$1"
|
||||
test "$version" = "nightly" || version_gt "$version" "v0.22.1"
|
||||
local VERSION="$1"
|
||||
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||
}
|
||||
|
||||
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_OUTPUT="rebar3"
|
||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
@@ -22,9 +23,10 @@ $ProgressPreference="Continue"
|
||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||
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_CMD}" "${DIR_FOR_BIN}/bin"
|
||||
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
|
||||
|
||||
@@ -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,
|
||||
"scripts": {
|
||||
"build": "ncc build src/setup-beam.js --no-cache",
|
||||
"format": "prettier src/**/*.js --write && prettier __tests__/**/*.js --write",
|
||||
"jslint": "eslint src/**/*.js && eslint __tests__/**/*.js",
|
||||
"format": "prettier src/**/*.js --write && prettier test/**/*.js --write",
|
||||
"jslint": "eslint src/**/*.js && eslint test/**/*.js",
|
||||
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
|
||||
"markdownlint": "markdownlint *.md",
|
||||
"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",
|
||||
"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": {
|
||||
"@actions/core": "1.9.1",
|
||||
"@actions/core": "1.10.0",
|
||||
"@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": {
|
||||
"@vercel/ncc": "0.33.4",
|
||||
"eslint": "8.14.0",
|
||||
"@vercel/ncc": "0.34.0",
|
||||
"eslint": "8.25.0",
|
||||
"eslint-config-airbnb": "19.0.4",
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"eslint-plugin-jsx-a11y": "6.5.1",
|
||||
"eslint-plugin-react": "7.29.0",
|
||||
"husky": "7.0.4",
|
||||
"markdownlint": "0.25.1",
|
||||
"prettier": "2.6.2",
|
||||
"eslint-plugin-jsx-a11y": "6.6.1",
|
||||
"eslint-plugin-react": "7.31.10",
|
||||
"husky": "8.0.1",
|
||||
"markdownlint": "0.26.2",
|
||||
"prettier": "2.7.1",
|
||||
"shellcheck": "1.1.0",
|
||||
"yaml-lint": "1.3.0",
|
||||
"yarn": "1.22.18"
|
||||
"yaml-lint": "1.7.0",
|
||||
"yarn": "1.22.19"
|
||||
},
|
||||
"engines": {
|
||||
"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}
|
||||
|
||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||
$FILE_OUTPUT="gleam.zip"
|
||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
||||
|
||||
function Version-Greater-Than([string]${THIS_ONE}, [string]${REFERENCE}) {
|
||||
$THIS_ONE=$THIS_ONE.replace('v', '')
|
||||
$THIS_ONE=$THIS_ONE.replace('rc', '')
|
||||
$THIS_ONE=$THIS_ONE.replace('-', '')
|
||||
return [version]${THIS_ONE} -gt [version]${REFERENCE}
|
||||
}
|
||||
|
||||
function Uses-LLVM-Triplets([string]${THIS_VSN}) {
|
||||
return "${THIS_VSN}" -eq "nightly" -or (Version-Greater-Than "${THIS_VSN}" "0.22.1")
|
||||
}
|
||||
|
||||
if (Uses-LLVM-Triplets "$VSN") {
|
||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||
} else {
|
||||
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
|
||||
}
|
||||
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||
$ProgressPreference="Continue"
|
||||
|
||||
@@ -9,12 +9,13 @@ FILE_OUTPUT=gleam.tar.gz
|
||||
DIR_FOR_BIN=.setup-beam/gleam
|
||||
|
||||
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() {
|
||||
local version="$1"
|
||||
test "$version" = "nightly" || version_gt "$version" "v0.22.1"
|
||||
local VERSION="$1"
|
||||
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||
}
|
||||
|
||||
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_OUTPUT="rebar3"
|
||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||
|
||||
$ProgressPreference="SilentlyContinue"
|
||||
@@ -22,9 +23,10 @@ $ProgressPreference="Continue"
|
||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||
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_CMD}" "${DIR_FOR_BIN}/bin"
|
||||
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
|
||||
|
||||
+98
-13
@@ -1,19 +1,76 @@
|
||||
const core = require('@actions/core')
|
||||
const { exec } = require('@actions/exec')
|
||||
const tc = require('@actions/tool-cache')
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const os = require('os')
|
||||
|
||||
/**
|
||||
* Install Erlang/OTP.
|
||||
*
|
||||
* @param {string} osVersion
|
||||
* @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
|
||||
if (OS === 'linux') {
|
||||
await exec(path.join(__dirname, 'install-otp.sh'), [osVersion, otpVersion])
|
||||
} else if (OS === 'win32') {
|
||||
const script = path.join(__dirname, 'install-otp.ps1')
|
||||
await exec(`pwsh.exe ${script} -VSN:${otpVersion}`)
|
||||
|
||||
try {
|
||||
if (OS === 'linux') {
|
||||
if (!cachedPath) {
|
||||
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.
|
||||
*
|
||||
* @param {string} elixirVersion
|
||||
* @param {string[]} hexMirrors
|
||||
*/
|
||||
async function installElixir(elixirVersion) {
|
||||
const OS = process.platform
|
||||
if (OS === 'linux') {
|
||||
await exec(path.join(__dirname, 'install-elixir.sh'), [elixirVersion])
|
||||
} else if (OS === 'win32') {
|
||||
const script = path.join(__dirname, 'install-elixir.ps1')
|
||||
await exec(`pwsh.exe ${script} -VSN:${elixirVersion}`)
|
||||
async function installElixir(elixirVersion, hexMirrors) {
|
||||
if (hexMirrors.length === 0) {
|
||||
throw new Error(
|
||||
`Could not install Elixir ${elixirVersion} from any hex.pm mirror`,
|
||||
)
|
||||
}
|
||||
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 { exec } = require('@actions/exec')
|
||||
const http = require('@actions/http-client')
|
||||
const path = require('path')
|
||||
const semver = require('semver')
|
||||
const https = require('https')
|
||||
const fs = require('fs')
|
||||
const installer = require('./installer')
|
||||
|
||||
main().catch((err) => {
|
||||
@@ -12,25 +13,39 @@ main().catch((err) => {
|
||||
async function main() {
|
||||
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 otpSpec = core.getInput('otp-version', { required: true })
|
||||
const elixirSpec = core.getInput('elixir-version', { required: false })
|
||||
const gleamSpec = core.getInput('gleam-version', { required: false })
|
||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||
const otpSpec = getInput('otp-version', true, 'erlang', versions)
|
||||
const elixirSpec = getInput('elixir-version', false, 'elixir', versions)
|
||||
const gleamSpec = getInput('gleam-version', false, 'gleam', versions)
|
||||
const rebar3Spec = getInput('rebar3-version', false, 'rebar', versions)
|
||||
const hexMirrors = core.getMultilineInput('hexpm-mirrors', {
|
||||
required: false,
|
||||
})
|
||||
|
||||
if (otpSpec !== 'false') {
|
||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||
await installOTP(otpSpec, osVersion, hexMirrors)
|
||||
const elixirInstalled = await maybeInstallElixir(
|
||||
elixirSpec,
|
||||
otpSpec,
|
||||
hexMirrors,
|
||||
)
|
||||
|
||||
if (elixirInstalled === true) {
|
||||
const shouldMixRebar = core.getInput('install-rebar', {
|
||||
required: false,
|
||||
})
|
||||
await mix(shouldMixRebar, 'rebar')
|
||||
const shouldMixHex = core.getInput('install-hex', {
|
||||
required: false,
|
||||
})
|
||||
await mix(shouldMixHex, 'hex')
|
||||
const shouldMixRebar = getInput('install-rebar', false)
|
||||
await mix(shouldMixRebar, 'rebar', hexMirrors)
|
||||
const shouldMixHex = getInput('install-hex', false)
|
||||
await mix(shouldMixHex, 'hex', hexMirrors)
|
||||
}
|
||||
} else if (!gleamSpec) {
|
||||
throw new Error('otp-version=false is only available when installing Gleam')
|
||||
@@ -40,38 +55,39 @@ async function main() {
|
||||
await maybeInstallRebar3(rebar3Spec)
|
||||
}
|
||||
|
||||
async function installOTP(otpSpec, osVersion) {
|
||||
const otpVersion = await getOTPVersion(otpSpec, osVersion)
|
||||
console.log(
|
||||
`##[group]Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`,
|
||||
)
|
||||
await installer.installOTP(osVersion, otpVersion)
|
||||
async function installOTP(otpSpec, osVersion, hexMirrors) {
|
||||
const otpVersion = await getOTPVersion(otpSpec, osVersion, hexMirrors)
|
||||
core.startGroup(`Installing Erlang/OTP ${otpVersion} - built on ${osVersion}`)
|
||||
await installer.installOTP(osVersion, otpVersion, hexMirrors)
|
||||
core.setOutput('otp-version', otpVersion)
|
||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/otp/bin`)
|
||||
console.log('##[endgroup]')
|
||||
core.endGroup()
|
||||
|
||||
return otpVersion
|
||||
}
|
||||
|
||||
async function maybeInstallElixir(elixirSpec, otpVersion) {
|
||||
async function maybeInstallElixir(elixirSpec, otpSpec, hexMirrors) {
|
||||
let installed = false
|
||||
|
||||
if (elixirSpec) {
|
||||
const elixirVersion = await getElixirVersion(elixirSpec, otpVersion)
|
||||
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
||||
await installer.installElixir(elixirVersion)
|
||||
const elixirVersion = await getElixirVersion(
|
||||
elixirSpec,
|
||||
otpSpec,
|
||||
hexMirrors,
|
||||
)
|
||||
core.startGroup(`Installing Elixir ${elixirVersion}`)
|
||||
await installer.installElixir(elixirVersion, hexMirrors)
|
||||
core.setOutput('elixir-version', elixirVersion)
|
||||
const disableProblemMatchers = core.getInput('disable_problem_matchers', {
|
||||
required: false,
|
||||
})
|
||||
const disableProblemMatchers = getInput('disable_problem_matchers', false)
|
||||
if (disableProblemMatchers === 'false') {
|
||||
const matchersPath = path.join(__dirname, '..', '.github')
|
||||
console.log(
|
||||
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
||||
const elixirMatchers = path.join(
|
||||
__dirname,
|
||||
'..',
|
||||
'matchers',
|
||||
'elixir-matchers.json',
|
||||
)
|
||||
core.info(`##[add-matcher]${elixirMatchers}`)
|
||||
}
|
||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
||||
console.log('##[endgroup]')
|
||||
core.endGroup()
|
||||
|
||||
installed = true
|
||||
}
|
||||
@@ -79,13 +95,29 @@ async function maybeInstallElixir(elixirSpec, otpVersion) {
|
||||
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') {
|
||||
const cmd = 'mix'
|
||||
const args = [`local.${what}`, '--force']
|
||||
console.log(`##[group]Running ${cmd} ${args}`)
|
||||
await exec(cmd, args)
|
||||
console.log('##[endgroup]')
|
||||
core.startGroup(`Running ${cmd} ${args}`)
|
||||
await mixWithMirrors(cmd, args, hexMirrors)
|
||||
core.endGroup()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,11 +126,11 @@ async function maybeInstallGleam(gleamSpec) {
|
||||
|
||||
if (gleamSpec) {
|
||||
const gleamVersion = await getGleamVersion(gleamSpec)
|
||||
console.log(`##[group]Installing Gleam ${gleamVersion}`)
|
||||
core.startGroup(`Installing Gleam ${gleamVersion}`)
|
||||
await installer.installGleam(gleamVersion)
|
||||
core.setOutput('gleam-version', gleamVersion)
|
||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
|
||||
console.log('##[endgroup]')
|
||||
core.endGroup()
|
||||
|
||||
installed = true
|
||||
}
|
||||
@@ -116,11 +148,11 @@ async function maybeInstallRebar3(rebar3Spec) {
|
||||
} else {
|
||||
rebar3Version = await getRebar3Version(rebar3Spec)
|
||||
}
|
||||
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
||||
core.startGroup(`Installing rebar3 ${rebar3Version}`)
|
||||
await installer.installRebar3(rebar3Version)
|
||||
core.setOutput('rebar3-version', rebar3Version)
|
||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`)
|
||||
console.log('##[endgroup]')
|
||||
core.endGroup()
|
||||
|
||||
installed = true
|
||||
}
|
||||
@@ -128,21 +160,15 @@ async function maybeInstallRebar3(rebar3Spec) {
|
||||
return installed
|
||||
}
|
||||
|
||||
async function getOTPVersion(otpSpec0, osVersion) {
|
||||
const otpVersions = await getOTPVersions(osVersion)
|
||||
const otpSpec = otpSpec0.match(/^(OTP-|maint-)?([^ ]+)/)
|
||||
let otpVersion
|
||||
if (otpSpec[1] && !isStrictVersion()) {
|
||||
throw new Error(
|
||||
`Requested Erlang/OTP version (${otpSpec0}) ` +
|
||||
"should not contain 'OTP-, or maint-'",
|
||||
)
|
||||
}
|
||||
if (otpSpec) {
|
||||
otpVersion = getVersionFromSpec(
|
||||
otpSpec[2],
|
||||
Array.from(otpVersions.keys()).sort(),
|
||||
)
|
||||
async function getOTPVersion(otpSpec0, osVersion, hexMirrors) {
|
||||
const otpVersions = await getOTPVersions(osVersion, hexMirrors)
|
||||
let otpSpec = otpSpec0 // might be a branch (?)
|
||||
const otpVersion = getVersionFromSpec(
|
||||
otpSpec,
|
||||
Array.from(otpVersions.keys()).sort(),
|
||||
)
|
||||
if (isVersion(otpSpec0)) {
|
||||
otpSpec = `OTP-${otpSpec0}` // ... it's a version!
|
||||
}
|
||||
if (otpVersion === null) {
|
||||
throw new Error(
|
||||
@@ -154,60 +180,48 @@ async function getOTPVersion(otpSpec0, osVersion) {
|
||||
return otpVersions.get(otpVersion) // from the reference, for download
|
||||
}
|
||||
|
||||
async function getElixirVersion(exSpec0, otpVersion) {
|
||||
const elixirVersions = await getElixirVersions()
|
||||
async function getElixirVersion(exSpec0, otpVersion0, hexMirrors) {
|
||||
const otpVersion = otpVersion0.match(/^([^-]+-)?(.+)$/)[2]
|
||||
const otpVersionMajor = otpVersion.match(/^([^.]+).*$/)[1]
|
||||
const elixirVersions = await getElixirVersions(hexMirrors)
|
||||
const semverVersions = Array.from(elixirVersions.keys()).sort()
|
||||
|
||||
const exSpec = exSpec0.match(/^v?(.+)(-otp-.+)/) || exSpec0.match(/^v?(.+)/)
|
||||
let elixirVersion
|
||||
if (exSpec[2] && !isStrictVersion()) {
|
||||
throw new Error(
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) ` +
|
||||
"should not contain '-otp-...'",
|
||||
)
|
||||
const exSpec = exSpec0.replace(/-otp-.*$/, '')
|
||||
const elixirVersionFromSpec = getVersionFromSpec(exSpec, semverVersions, true)
|
||||
let elixirVersionForDownload = elixirVersionFromSpec
|
||||
if (isVersion(otpVersionMajor)) {
|
||||
elixirVersionForDownload = `${elixirVersionFromSpec}-otp-${otpVersionMajor}`
|
||||
}
|
||||
if (exSpec) {
|
||||
elixirVersion = getVersionFromSpec(exSpec[1], semverVersions)
|
||||
}
|
||||
if (!exSpec || elixirVersion === null) {
|
||||
if (elixirVersionFromSpec === null) {
|
||||
throw new Error(
|
||||
`Requested Elixir version (${exSpec0}) not found in version list ` +
|
||||
"(should you be using option 'version-type': 'strict'?)",
|
||||
)
|
||||
}
|
||||
const otpMatch = otpVersion.match(/^(?:OTP-)?([^.]+)/)
|
||||
let elixirVersionWithOTP
|
||||
|
||||
if (elixirVersions.get(elixirVersion)) {
|
||||
const otpVersionMajor = otpMatch[1]
|
||||
// We try for a version like `v1.4.5-otp-20`...
|
||||
if (elixirVersions.get(elixirVersion).includes(otpMatch[1])) {
|
||||
// ... and it's available: use it!
|
||||
elixirVersionWithOTP = `${elixirVersion}-otp-${otpVersionMajor}`
|
||||
core.info(
|
||||
`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?)',
|
||||
)
|
||||
}
|
||||
const elixirVersionComp = elixirVersions.get(elixirVersionFromSpec)
|
||||
if (
|
||||
(elixirVersionComp && elixirVersionComp.includes(otpVersionMajor)) ||
|
||||
!isVersion(otpVersionMajor)
|
||||
) {
|
||||
core.info(
|
||||
`Using Elixir ${elixirVersionFromSpec} (built for Erlang/OTP ${otpVersionMajor})`,
|
||||
)
|
||||
} else {
|
||||
throw new Error(
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion}) not ` +
|
||||
"found in version list (should you be using option 'version-type': 'strict'?)",
|
||||
`Requested Elixir / Erlang/OTP version (${exSpec0} / ${otpVersion0}) not ` +
|
||||
'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) {
|
||||
const gleamSpec = gleamSpec0.match(/^v?(.+)/)
|
||||
const gleamSpec = gleamSpec0.match(/^v?(.+)$/)
|
||||
const gleamVersions = await getGleamVersions()
|
||||
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions)
|
||||
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions, true)
|
||||
if (gleamVersion === null) {
|
||||
throw new Error(
|
||||
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
|
||||
@@ -231,19 +245,19 @@ async function getRebar3Version(r3Spec) {
|
||||
return rebar3Version
|
||||
}
|
||||
|
||||
async function getOTPVersions(osVersion) {
|
||||
async function getOTPVersions(osVersion, hexMirrors) {
|
||||
let otpVersionsListings
|
||||
let originListing
|
||||
let pageIdxs
|
||||
if (process.platform === 'linux') {
|
||||
originListing = `https://repo.hex.pm/builds/otp/${osVersion}/builds.txt`
|
||||
pageIdxs = [null]
|
||||
originListing = `/builds/otp/${osVersion}/builds.txt`
|
||||
otpVersionsListings = await getWithMirrors(originListing, hexMirrors)
|
||||
} else if (process.platform === 'win32') {
|
||||
originListing =
|
||||
'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()
|
||||
|
||||
if (process.platform === 'linux') {
|
||||
@@ -251,13 +265,15 @@ async function getOTPVersions(osVersion) {
|
||||
.trim()
|
||||
.split('\n')
|
||||
.forEach((line) => {
|
||||
const otpMatch = line.match(/^(OTP-|maint-)?([^ ]+)/)
|
||||
const otpMatch = line
|
||||
.match(/^([^ ]+)?( .+)/)[1]
|
||||
.match(/^([^-]+-)?(.+)$/)
|
||||
const otpVersion = otpMatch[2]
|
||||
otpVersions.set(otpVersion, otpMatch[0]) // we keep the original for later reference
|
||||
})
|
||||
} else if (process.platform === 'win32') {
|
||||
otpVersionsListings.forEach((otpVersionsListing) => {
|
||||
JSON.parse(otpVersionsListing)
|
||||
jsonParseAsList(otpVersionsListing)
|
||||
.map((x) => x.assets)
|
||||
.flat()
|
||||
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
||||
@@ -268,14 +284,13 @@ async function getOTPVersions(osVersion) {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
return otpVersions
|
||||
}
|
||||
|
||||
async function getElixirVersions() {
|
||||
const elixirVersionsListings = await get(
|
||||
'https://repo.hex.pm/builds/elixir/builds.txt',
|
||||
[null],
|
||||
async function getElixirVersions(hexMirrors) {
|
||||
const elixirVersionsListings = await getWithMirrors(
|
||||
'/builds/elixir/builds.txt',
|
||||
hexMirrors,
|
||||
)
|
||||
const otpVersionsForElixirMap = new Map()
|
||||
|
||||
@@ -285,7 +300,7 @@ async function getElixirVersions() {
|
||||
.forEach((line) => {
|
||||
const elixirMatch =
|
||||
line.match(/^v?(.+)-otp-([^ ]+)/) || line.match(/^v?([^ ]+)/)
|
||||
const elixirVersion = elixirMatch[1]
|
||||
const elixirVersion = maybePrependWithV(elixirMatch[1])
|
||||
const otpVersion = elixirMatch[2]
|
||||
const otpVersions = otpVersionsForElixirMap.get(elixirVersion) || []
|
||||
if (otpVersion) {
|
||||
@@ -305,7 +320,7 @@ async function getGleamVersions() {
|
||||
)
|
||||
const gleamVersionsListing = []
|
||||
resultJSONs.forEach((resultJSON) => {
|
||||
JSON.parse(resultJSON)
|
||||
jsonParseAsList(resultJSON)
|
||||
.map((x) => x.tag_name)
|
||||
.sort()
|
||||
.forEach((v) => gleamVersionsListing.push(v))
|
||||
@@ -320,7 +335,7 @@ async function getRebar3Versions() {
|
||||
)
|
||||
const rebar3VersionsListing = []
|
||||
resultJSONs.forEach((resultJSON) => {
|
||||
JSON.parse(resultJSON)
|
||||
jsonParseAsList(resultJSON)
|
||||
.map((x) => x.tag_name)
|
||||
.sort()
|
||||
.forEach((v) => rebar3VersionsListing.push(v))
|
||||
@@ -329,10 +344,10 @@ async function getRebar3Versions() {
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
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) {
|
||||
@@ -420,63 +444,147 @@ function getRunnerOSVersion() {
|
||||
}
|
||||
|
||||
async function get(url0, pageIdxs) {
|
||||
function getPage(pageIdx) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const url = new URL(url0)
|
||||
if (pageIdx !== null) {
|
||||
url.searchParams.append('page', pageIdx)
|
||||
}
|
||||
https
|
||||
.get(
|
||||
url,
|
||||
{
|
||||
headers: { 'user-agent': 'setup-beam' },
|
||||
},
|
||||
(res) => {
|
||||
let data = ''
|
||||
res.on('data', (chunk) => {
|
||||
data += chunk
|
||||
})
|
||||
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)
|
||||
})
|
||||
async function getPage(pageIdx) {
|
||||
const url = new URL(url0)
|
||||
const headers = {}
|
||||
const GithubToken = getInput('github-token', false)
|
||||
|
||||
if (GithubToken && url.host === 'api.github.com') {
|
||||
headers.authorization = `Bearer ${GithubToken}`
|
||||
}
|
||||
|
||||
if (pageIdx !== null) {
|
||||
url.searchParams.append('page', pageIdx)
|
||||
}
|
||||
|
||||
const httpClient = new http.HttpClient('setup-beam', [], {
|
||||
allowRetries: true,
|
||||
maxRetries: 3,
|
||||
})
|
||||
|
||||
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) {
|
||||
ret = getPage(null)
|
||||
} else {
|
||||
ret = Promise.all(pageIdxs.map((pageIdx) => getPage(pageIdx)))
|
||||
return getPage(null)
|
||||
}
|
||||
return ret
|
||||
return Promise.all(pageIdxs.map(getPage))
|
||||
}
|
||||
|
||||
function maybePrependWithV(versionToPrepend, specVersion) {
|
||||
const digitStart = /^\d+/
|
||||
let v = versionToPrepend
|
||||
if (digitStart.test(specVersion)) {
|
||||
v = `v${versionToPrepend}`
|
||||
async function getWithMirrors(resourcePath, hexMirrors) {
|
||||
if (hexMirrors.length === 0) {
|
||||
throw new Error(`Could not fetch ${resourcePath} from any hex.pm mirror`)
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
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 = {
|
||||
getOTPVersion,
|
||||
getElixirVersion,
|
||||
getGleamVersion,
|
||||
getRebar3Version,
|
||||
getVersionFromSpec,
|
||||
parseVersionFile,
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
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() {
|
||||
await testElixirMixCompileError()
|
||||
await testElixirMixCompileWarning()
|
||||
await testElixirMixTestFailure()
|
||||
await testElixirCredoOutputDefault()
|
||||
await testElixirDialyzerOutputDefault()
|
||||
}
|
||||
|
||||
async function testElixirMixCompileError() {
|
||||
@@ -74,27 +74,9 @@ async function testElixirCredoOutputDefault() {
|
||||
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()
|
||||
.then(() => process.exit(0))
|
||||
.catch((err) => {
|
||||
console.error(err)
|
||||
core.error(err)
|
||||
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('elixir-version', '1.11')
|
||||
simulateInput('rebar3-version', '3.14')
|
||||
simulateInput('otp-version', '25.1.2')
|
||||
simulateInput('elixir-version', '1.14.2')
|
||||
simulateInput('rebar3-version', '3.20')
|
||||
simulateInput('install-rebar', 'true')
|
||||
simulateInput('install-hex', 'true')
|
||||
simulateInput('github-token', process.env.GITHUB_TOKEN)
|
||||
simulateInput('hexpm-mirrors', ['https://builds.hex.pm'])
|
||||
|
||||
const assert = require('assert')
|
||||
const fs = require('fs')
|
||||
const core = require('@actions/core')
|
||||
const setupBeam = require('../src/setup-beam')
|
||||
const installer = require('../src/installer')
|
||||
|
||||
@@ -20,6 +24,8 @@ async function all() {
|
||||
await testRebar3Versions()
|
||||
|
||||
await testGetVersionFromSpec()
|
||||
|
||||
await testParseVersionFile()
|
||||
}
|
||||
|
||||
async function testFailInstallOTP() {
|
||||
@@ -98,48 +104,49 @@ async function testOTPVersions() {
|
||||
let expected
|
||||
let spec
|
||||
let osVersion
|
||||
const hexMirrors = ['https://repo.hex.pm', 'https://cdn.jsdelivr.net/hex']
|
||||
|
||||
if (process.platform === 'linux') {
|
||||
spec = '19.3.x'
|
||||
osVersion = 'ubuntu-16.04'
|
||||
expected = 'OTP-19.3.6.13'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '^19.3.6'
|
||||
osVersion = 'ubuntu-16.04'
|
||||
expected = 'OTP-19.3.6.13'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '^19.3'
|
||||
osVersion = 'ubuntu-18.04'
|
||||
expected = 'OTP-19.3.6.13'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '20'
|
||||
osVersion = 'ubuntu-20.04'
|
||||
expected = 'OTP-20.3.8.26'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '20.x'
|
||||
osVersion = 'ubuntu-20.04'
|
||||
expected = 'OTP-20.3.8.26'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '20.0'
|
||||
osVersion = 'ubuntu-20.04'
|
||||
expected = 'OTP-20.0.5'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '20.0.x'
|
||||
osVersion = 'ubuntu-20.04'
|
||||
expected = 'OTP-20.0.5'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
}
|
||||
|
||||
@@ -147,19 +154,19 @@ async function testOTPVersions() {
|
||||
spec = '24.0.1'
|
||||
osVersion = 'windows-latest'
|
||||
expected = '24.0.1'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '23.2.x'
|
||||
osVersion = 'windows-2016'
|
||||
expected = '23.2.7'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
spec = '23.0'
|
||||
osVersion = 'windows-2019'
|
||||
expected = '23.0.4'
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||
got = await setupBeam.getOTPVersion(spec, osVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
}
|
||||
}
|
||||
@@ -169,48 +176,58 @@ async function testElixirVersions() {
|
||||
let expected
|
||||
let spec
|
||||
let otpVersion
|
||||
let before
|
||||
const hexMirrors = ['https://repo.hex.pm']
|
||||
|
||||
spec = '1.1.x'
|
||||
otpVersion = '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)
|
||||
|
||||
spec = '1.10.4'
|
||||
otpVersion = '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)
|
||||
|
||||
spec = '1.12.1'
|
||||
otpVersion = 'OTP-24.0.2'
|
||||
expected = 'v1.12.1-otp-24'
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||
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'
|
||||
otpVersion = '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)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = 'v1.11.0'
|
||||
otpVersion = '22.3.4.2'
|
||||
expected = 'v1.11.0-otp-22'
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
spec = 'master'
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = 'main'
|
||||
otpVersion = '23.1'
|
||||
expected = 'master-otp-23'
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion)
|
||||
expected = 'main-otp-23'
|
||||
got = await setupBeam.getElixirVersion(spec, otpVersion, hexMirrors)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
}
|
||||
|
||||
async function testGleamVersions() {
|
||||
@@ -231,13 +248,13 @@ async function testGleamVersions() {
|
||||
got = await setupBeam.getGleamVersion(spec, otpVersion)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
const before = simulateInput('version-type', 'strict')
|
||||
spec = 'v0.14.0-rc2'
|
||||
otpVersion = 'OTP-22'
|
||||
expected = 'v0.14.0-rc2'
|
||||
got = await setupBeam.getGleamVersion(spec, otpVersion)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
}
|
||||
|
||||
async function testRebar3Versions() {
|
||||
@@ -265,6 +282,7 @@ async function testGetVersionFromSpec() {
|
||||
let got
|
||||
let expected
|
||||
let spec
|
||||
let before
|
||||
const versions = [
|
||||
'3.2.30.5',
|
||||
'3.2.3.5',
|
||||
@@ -306,19 +324,19 @@ async function testGetVersionFromSpec() {
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = '1'
|
||||
expected = '1'
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = '1.0'
|
||||
expected = '1.0'
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
|
||||
spec = '2'
|
||||
expected = '2.10'
|
||||
@@ -345,12 +363,12 @@ async function testGetVersionFromSpec() {
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = '24.0-rc3'
|
||||
expected = '24.0-rc3'
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
|
||||
spec = '24.0-rc2'
|
||||
expected = '24.0-rc2'
|
||||
@@ -377,33 +395,92 @@ async function testGetVersionFromSpec() {
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = 'master'
|
||||
expected = 'master'
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
simulateInput('version-type', 'loose')
|
||||
simulateInput('version-type', before)
|
||||
|
||||
spec = 'master'
|
||||
expected = 'master'
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
assert.deepStrictEqual(got, expected)
|
||||
|
||||
simulateInput('version-type', 'strict')
|
||||
before = simulateInput('version-type', 'strict')
|
||||
spec = '22.3.4.2'
|
||||
expected = '22.3.4.2'
|
||||
got = setupBeam.getVersionFromSpec(spec, versions)
|
||||
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) {
|
||||
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()
|
||||
.then(() => process.exit(0))
|
||||
.catch((err) => {
|
||||
console.error(err)
|
||||
core.error(err)
|
||||
process.exit(1)
|
||||
})
|
||||
Reference in New Issue
Block a user