mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-23 07:06:07 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a255120a82 | |||
| ffd9affe89 | |||
| 049962787b | |||
| 1f06ac36d3 | |||
| e3f6ffe287 | |||
| 81d8403713 | |||
| c10774ce0f | |||
| 37ac1c5116 | |||
| 2d314bc413 | |||
| aee3f52e58 | |||
| 96fce952fd | |||
| 35850967ef |
@@ -57,22 +57,6 @@
|
|||||||
"column": 3
|
"column": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"owner": "elixir-dialyzerOutputDefault",
|
|
||||||
"severity": "warning",
|
|
||||||
"pattern": [
|
|
||||||
{
|
|
||||||
"regexp": "^(.*):(\\d+):(.*)",
|
|
||||||
"file": 1,
|
|
||||||
"line": 2,
|
|
||||||
"code": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"regexp": "^(.*)$",
|
|
||||||
"message": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,10 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
types: [opened, synchronize]
|
||||||
- main
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_integrity:
|
check_integrity:
|
||||||
@@ -28,7 +30,7 @@ jobs:
|
|||||||
- run: npm run yamllint
|
- run: npm run yamllint
|
||||||
- run: npm run jslint
|
- run: npm run jslint
|
||||||
- name: Check if build left artifacts
|
- name: Check if build left artifacts
|
||||||
run: git diff --exit-code
|
run: git diff --exit-code --ignore-space-at-eol
|
||||||
|
|
||||||
unit_tests_ubuntu:
|
unit_tests_ubuntu:
|
||||||
name: Unit tests (Ubuntu)
|
name: Unit tests (Ubuntu)
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
types: [opened, synchronize]
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
integration_test:
|
integration_test:
|
||||||
@@ -179,10 +178,10 @@ jobs:
|
|||||||
cd test-projects/erlang_rebar3
|
cd test-projects/erlang_rebar3
|
||||||
rebar3 ct
|
rebar3 ct
|
||||||
if: ${{matrix.combo.rebar3-version}}
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
- name: Type check Gleam project (without installing Erlang/OTP)
|
- name: Format Gleam project (without installing Erlang/OTP)
|
||||||
run: |
|
run: |
|
||||||
cd test-projects/gleam_gleam
|
cd test-projects/gleam_gleam
|
||||||
gleam check
|
gleam format
|
||||||
if: ${{ matrix.combo.gleam-version && !matrix.combo.otp-version }}
|
if: ${{ matrix.combo.gleam-version && !matrix.combo.otp-version }}
|
||||||
- name: Run Gleam project tests (without `rebar3`)
|
- name: Run Gleam project tests (without `rebar3`)
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -17,5 +17,3 @@ jobs:
|
|||||||
node-version: '14'
|
node-version: '14'
|
||||||
- run:
|
- run:
|
||||||
./.github/workflows/update_3rd_party_licenses.sh
|
./.github/workflows/update_3rd_party_licenses.sh
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
types: [opened, synchronize]
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
integration_test:
|
integration_test:
|
||||||
@@ -41,9 +40,11 @@ jobs:
|
|||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
rebar3-version: '3.15'
|
rebar3-version: '3.15'
|
||||||
os: 'windows-latest'
|
os: 'windows-latest'
|
||||||
|
- gleam-version: '0.19.0-rc3'
|
||||||
|
otp-version: '24'
|
||||||
|
os: 'windows-latest'
|
||||||
- gleam-version: '0.23.0-rc1'
|
- gleam-version: '0.23.0-rc1'
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
rebar3-version: '3.16'
|
|
||||||
os: 'windows-latest'
|
os: 'windows-latest'
|
||||||
- elixir-version: 'v1.13'
|
- elixir-version: 'v1.13'
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
@@ -70,6 +71,17 @@ jobs:
|
|||||||
if: ${{matrix.combo.gleam-version}}
|
if: ${{matrix.combo.gleam-version}}
|
||||||
- name: rebar3 version (action)
|
- name: rebar3 version (action)
|
||||||
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
|
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
|
||||||
|
- name: Run rebar3 and rebar3.cmd
|
||||||
|
run: |
|
||||||
|
# Should not fail
|
||||||
|
rebar3 version
|
||||||
|
rebar3.cmd version
|
||||||
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
|
- name: rebar3 from Rust
|
||||||
|
run: |
|
||||||
|
cd test-projects/rust_rebar3_cmd
|
||||||
|
cargo test -- --nocapture
|
||||||
|
if: ${{matrix.combo.rebar3-version}}
|
||||||
- name: mix version and help (CLI)
|
- name: mix version and help (CLI)
|
||||||
run: |
|
run: |
|
||||||
mix -v
|
mix -v
|
||||||
|
|||||||
+107
-29
@@ -1002,6 +1002,32 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: available-typed-arrays, is-weakref, typed-array-length. A copy of the source code may be downloaded from git+https://github.com/inspect-js/available-typed-arrays.git (available-typed-arrays), git+https://github.com/inspect-js/is-weakref.git (is-weakref), git+https://github.com/inspect-js/typed-array-length.git (typed-array-length). This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Inspect JS
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: axe-core. A copy of the source code may be downloaded from https://github.com/dequelabs/axe-core.git. This software contains the following license and notice below:
|
The following software may be included in this product: axe-core. A copy of the source code may be downloaded from https://github.com/dequelabs/axe-core.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
Mozilla Public License, version 2.0
|
Mozilla Public License, version 2.0
|
||||||
@@ -2009,7 +2035,33 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: es-shim-unscopables, 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/safe-regex-test.git (safe-regex-test). This software contains the following license and notice below:
|
The following software may be included in this product: es-set-tostringtag. A copy of the source code may be downloaded from git+https://github.com/es-shims/es-set-tostringtag.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 ECMAScript Shims
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: es-shim-unscopables, gopd, safe-regex-test. A copy of the source code may be downloaded from git+https://github.com/ljharb/es-shim-unscopables.git (es-shim-unscopables), git+https://github.com/ljharb/gopd.git (gopd), git+https://github.com/ljharb/safe-regex-test.git (safe-regex-test). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -2035,7 +2087,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: es-to-primitive, is-boolean-object, is-callable, is-date-object, is-number-object, is-string, is-symbol, object.entries, object.values, string.prototype.matchall. A copy of the source code may be downloaded from git://github.com/ljharb/es-to-primitive.git (es-to-primitive), git://github.com/inspect-js/is-boolean-object.git (is-boolean-object), git://github.com/inspect-js/is-callable.git (is-callable), git://github.com/inspect-js/is-date-object.git (is-date-object), git://github.com/inspect-js/is-number-object.git (is-number-object), git://github.com/ljharb/is-string.git (is-string), git://github.com/inspect-js/is-symbol.git (is-symbol), git://github.com/es-shims/Object.entries.git (object.entries), git://github.com/es-shims/Object.values.git (object.values), git+https://github.com/es-shims/String.prototype.matchAll.git (string.prototype.matchall). This software contains the following license and notice below:
|
The following software may be included in this product: es-to-primitive, is-boolean-object, is-callable, is-date-object, is-number-object, is-string, is-symbol, is-typed-array, object.entries, object.values, string.prototype.matchall, which-typed-array. A copy of the source code may be downloaded from git://github.com/ljharb/es-to-primitive.git (es-to-primitive), git://github.com/inspect-js/is-boolean-object.git (is-boolean-object), git://github.com/inspect-js/is-callable.git (is-callable), git://github.com/inspect-js/is-date-object.git (is-date-object), git://github.com/inspect-js/is-number-object.git (is-number-object), git://github.com/ljharb/is-string.git (is-string), git://github.com/inspect-js/is-symbol.git (is-symbol), git://github.com/inspect-js/is-typed-array.git (is-typed-array), git://github.com/es-shims/Object.entries.git (object.entries), git://github.com/es-shims/Object.values.git (object.values), git+https://github.com/es-shims/String.prototype.matchAll.git (string.prototype.matchall), git://github.com/inspect-js/which-typed-array.git (which-typed-array). This software contains the following license and notice below:
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
@@ -2719,6 +2771,32 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: for-each. A copy of the source code may be downloaded from git://github.com/Raynos/for-each.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2012 Raynos.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: fs.realpath. A copy of the source code may be downloaded from git+https://github.com/isaacs/fs.realpath.git. This software contains the following license and notice below:
|
The following software may be included in this product: fs.realpath. A copy of the source code may be downloaded from git+https://github.com/isaacs/fs.realpath.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
The ISC License
|
The ISC License
|
||||||
@@ -3001,7 +3079,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
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: has-property-descriptors, has-proto, supports-preserve-symlinks-flag. A copy of the source code may be downloaded from git+https://github.com/inspect-js/has-property-descriptors.git (has-property-descriptors), git+https://github.com/inspect-js/has-proto.git (has-proto), git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git (supports-preserve-symlinks-flag). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
@@ -3139,6 +3217,32 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: is-array-buffer. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-array-buffer.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2015 Chen Gengyuan, Inspect JS
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: is-bigint, object.fromentries. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-bigint.git (is-bigint), git://github.com/es-shims/Object.fromEntries.git (object.fromentries). This software contains the following license and notice below:
|
The following software may be included in this product: is-bigint, object.fromentries. A copy of the source code may be downloaded from git+https://github.com/inspect-js/is-bigint.git (is-bigint), git://github.com/es-shims/Object.fromEntries.git (object.fromentries). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -3267,32 +3371,6 @@ 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:
|
|
||||||
|
|
||||||
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: 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:
|
The following software may be included in this product: js-sdsl. A copy of the source code may be downloaded from https://github.com/js-sdsl/js-sdsl.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<!-- markdownlint-disable MD013 -->
|
<!-- markdownlint-disable MD013 -->
|
||||||
# setup-beam [![GitHub Actions][action-img]][action] [![GitHub Actions][ubuntu-img]][ubuntu] [![GitHub Actions][windows-img]][windows]
|
# setup-beam [![GitHub Actions][action-img]][action] [![GitHub Actions][ubuntu-img]][ubuntu] [![GitHub Actions][windows-img]][windows]
|
||||||
|
|
||||||
[action]: https://github.com/erlef/setup-beam
|
[action]: https://github.com/erlef/setup-beam/actions/workflows/action.yml
|
||||||
[action-img]: https://github.com/erlef/setup-beam/workflows/action/badge.svg
|
[action-img]: https://github.com/erlef/setup-beam/actions/workflows/action.yml/badge.svg
|
||||||
[ubuntu]: https://github.com/erlef/setup-beam
|
[ubuntu]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml
|
||||||
[ubuntu-img]: https://github.com/erlef/setup-beam/workflows/ubuntu/badge.svg
|
[ubuntu-img]: https://github.com/erlef/setup-beam/actions/workflows/ubuntu.yml/badge.svg
|
||||||
[windows]: https://github.com/erlef/setup-beam
|
[windows]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml
|
||||||
[windows-img]: https://github.com/erlef/setup-beam/workflows/windows/badge.svg
|
[windows-img]: https://github.com/erlef/setup-beam/actions/workflows/windows.yml/badge.svg
|
||||||
|
|
||||||
This action sets up an Erlang/OTP environment for use in a GitHub Actions
|
This action sets up an Erlang/OTP environment for use in a GitHub Actions
|
||||||
workflow by:
|
workflow by:
|
||||||
@@ -83,7 +83,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04
|
ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
@@ -128,7 +128,7 @@ jobs:
|
|||||||
otp: ['20.3', '21.3', '22.2']
|
otp: ['20.3', '21.3', '22.2']
|
||||||
elixir: ['1.8.2', '1.9.4']
|
elixir: ['1.8.2', '1.9.4']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: ${{matrix.otp}}
|
otp-version: ${{matrix.otp}}
|
||||||
@@ -152,7 +152,7 @@ jobs:
|
|||||||
otp: ['20.3', '21.3', '22.2']
|
otp: ['20.3', '21.3', '22.2']
|
||||||
rebar3: ['3.14.1', '3.14.3']
|
rebar3: ['3.14.1', '3.14.3']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: ${{matrix.otp}}
|
otp-version: ${{matrix.otp}}
|
||||||
@@ -170,7 +170,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: windows-2022
|
runs-on: windows-2022
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
@@ -188,7 +188,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
@@ -206,7 +206,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: false
|
otp-version: false
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ async function all() {
|
|||||||
await testElixirMixCompileWarning()
|
await testElixirMixCompileWarning()
|
||||||
await testElixirMixTestFailure()
|
await testElixirMixTestFailure()
|
||||||
await testElixirCredoOutputDefault()
|
await testElixirCredoOutputDefault()
|
||||||
await testElixirDialyzerOutputDefault()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testElixirMixCompileError() {
|
async function testElixirMixCompileError() {
|
||||||
@@ -74,24 +73,6 @@ async function testElixirCredoOutputDefault() {
|
|||||||
assert.equal(column, '7')
|
assert.equal(column, '7')
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testElixirDialyzerOutputDefault() {
|
|
||||||
const [messagePattern, filePattern] = problemMatcher.find(
|
|
||||||
({ owner }) => owner === 'elixir-dialyzerOutputDefault',
|
|
||||||
).pattern
|
|
||||||
|
|
||||||
const firstOutput = 'lib/test.ex:15:invalid_contract'
|
|
||||||
const secondOutput =
|
|
||||||
'The @spec for the function does not match the success typing of the function.'
|
|
||||||
|
|
||||||
const [, file, line, code] = firstOutput.match(messagePattern.regexp)
|
|
||||||
assert.equal(file, 'lib/test.ex')
|
|
||||||
assert.equal(line, '15')
|
|
||||||
assert.equal(code, 'invalid_contract')
|
|
||||||
|
|
||||||
const [, message] = secondOutput.match(filePattern.regexp)
|
|
||||||
assert.equal(message, secondOutput)
|
|
||||||
}
|
|
||||||
|
|
||||||
all()
|
all()
|
||||||
.then(() => process.exit(0))
|
.then(() => process.exit(0))
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
simulateInput('otp-version', '23.2')
|
simulateInput('otp-version', '25.1.2')
|
||||||
simulateInput('elixir-version', '1.11')
|
simulateInput('elixir-version', '1.14.2')
|
||||||
simulateInput('rebar3-version', '3.14')
|
simulateInput('rebar3-version', '3.20')
|
||||||
simulateInput('install-rebar', 'true')
|
simulateInput('install-rebar', 'true')
|
||||||
simulateInput('install-hex', 'true')
|
simulateInput('install-hex', 'true')
|
||||||
|
simulateInput('github-token', process.env.GITHUB_TOKEN)
|
||||||
|
|
||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
@@ -411,13 +412,19 @@ async function testGetVersionFromSpec() {
|
|||||||
async function testParseVersionFile() {
|
async function testParseVersionFile() {
|
||||||
const otpVersion = unsimulateInput('otp-version')
|
const otpVersion = unsimulateInput('otp-version')
|
||||||
const elixirVersion = unsimulateInput('elixir-version')
|
const elixirVersion = unsimulateInput('elixir-version')
|
||||||
|
const gleamVersion = unsimulateInput('gleam-version')
|
||||||
|
const rebar3Version = unsimulateInput('rebar3-version')
|
||||||
|
|
||||||
const erlang = '25.1.1'
|
const erlang = '25.1.1'
|
||||||
const elixir = '1.14.1'
|
const elixir = '1.14.1'
|
||||||
|
const gleam = '0.23.0'
|
||||||
|
const rebar3 = '3.16.0'
|
||||||
const toolVersions = `# a comment
|
const toolVersions = `# a comment
|
||||||
erlang ${erlang}# comment, no space
|
erlang ${erlang}# comment, no space
|
||||||
elixir ${elixir} # comment, with space
|
elixir ${elixir} # comment, with space
|
||||||
gleam 0.23 # not picked up`
|
not-gleam 0.23 # not picked up
|
||||||
|
gleam ${gleam}
|
||||||
|
rebar ${rebar3}`
|
||||||
const filename = '__tests__/.tool-versions'
|
const filename = '__tests__/.tool-versions'
|
||||||
fs.writeFileSync(filename, toolVersions)
|
fs.writeFileSync(filename, toolVersions)
|
||||||
process.env.GITHUB_WORKSPACE = ''
|
process.env.GITHUB_WORKSPACE = ''
|
||||||
@@ -425,8 +432,23 @@ elixir ${elixir} # comment, with space
|
|||||||
assert.strictEqual(appVersions.get('erlang'), erlang)
|
assert.strictEqual(appVersions.get('erlang'), erlang)
|
||||||
assert.strictEqual(appVersions.get('elixir'), elixir)
|
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('otp-version', otpVersion)
|
||||||
simulateInput('elixir-version', elixirVersion)
|
simulateInput('elixir-version', elixirVersion)
|
||||||
|
simulateInput('gleam-version', gleamVersion)
|
||||||
|
simulateInput('rebar3-version', rebar3Version)
|
||||||
}
|
}
|
||||||
|
|
||||||
function unsimulateInput(key) {
|
function unsimulateInput(key) {
|
||||||
|
|||||||
@@ -8,6 +8,15 @@ branding:
|
|||||||
color: blue
|
color: blue
|
||||||
icon: code
|
icon: code
|
||||||
inputs:
|
inputs:
|
||||||
|
github-token:
|
||||||
|
description: >
|
||||||
|
A GitHub token used to access the GitHub REST API for retrieving release and version information.
|
||||||
|
While this action will never perform anything more than read operations against the GitHub REST API,
|
||||||
|
we do not recommend providing a self-generated personal access token which may provide more access than is
|
||||||
|
required of this action. This input instead is merely a convenience so that users of this action do not
|
||||||
|
have to manually pass an automatically generated token via their environment settings within a workflow.
|
||||||
|
[Learn more about automatically generated tokens](https://docs.github.com/en/actions/security-guides/automatic-token-authentication)
|
||||||
|
default: ${{ github.token }}
|
||||||
otp-version:
|
otp-version:
|
||||||
description: Version range or exact version of Erlang/OTP to use,
|
description: Version range or exact version of Erlang/OTP to use,
|
||||||
or false when installing only Gleam without OTP
|
or false when installing only Gleam without OTP
|
||||||
|
|||||||
Vendored
-16
@@ -57,22 +57,6 @@
|
|||||||
"column": 3
|
"column": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"owner": "elixir-dialyzerOutputDefault",
|
|
||||||
"severity": "warning",
|
|
||||||
"pattern": [
|
|
||||||
{
|
|
||||||
"regexp": "^(.*):(\\d+):(.*)",
|
|
||||||
"file": 1,
|
|
||||||
"line": 2,
|
|
||||||
"code": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"regexp": "^(.*)$",
|
|
||||||
"message": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+39
-26
@@ -7440,7 +7440,7 @@ async function getOTPVersions(osVersion) {
|
|||||||
})
|
})
|
||||||
} else if (process.platform === 'win32') {
|
} else if (process.platform === 'win32') {
|
||||||
otpVersionsListings.forEach((otpVersionsListing) => {
|
otpVersionsListings.forEach((otpVersionsListing) => {
|
||||||
JSON.parse(otpVersionsListing)
|
jsonParse(otpVersionsListing)
|
||||||
.map((x) => x.assets)
|
.map((x) => x.assets)
|
||||||
.flat()
|
.flat()
|
||||||
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
||||||
@@ -7487,7 +7487,7 @@ async function getGleamVersions() {
|
|||||||
)
|
)
|
||||||
const gleamVersionsListing = []
|
const gleamVersionsListing = []
|
||||||
resultJSONs.forEach((resultJSON) => {
|
resultJSONs.forEach((resultJSON) => {
|
||||||
JSON.parse(resultJSON)
|
jsonParse(resultJSON)
|
||||||
.map((x) => x.tag_name)
|
.map((x) => x.tag_name)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach((v) => gleamVersionsListing.push(v))
|
.forEach((v) => gleamVersionsListing.push(v))
|
||||||
@@ -7502,7 +7502,7 @@ async function getRebar3Versions() {
|
|||||||
)
|
)
|
||||||
const rebar3VersionsListing = []
|
const rebar3VersionsListing = []
|
||||||
resultJSONs.forEach((resultJSON) => {
|
resultJSONs.forEach((resultJSON) => {
|
||||||
JSON.parse(resultJSON)
|
jsonParse(resultJSON)
|
||||||
.map((x) => x.tag_name)
|
.map((x) => x.tag_name)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach((v) => rebar3VersionsListing.push(v))
|
.forEach((v) => rebar3VersionsListing.push(v))
|
||||||
@@ -7609,33 +7609,36 @@ async function get(url0, pageIdxs) {
|
|||||||
function getPage(pageIdx) {
|
function getPage(pageIdx) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const url = new URL(url0)
|
const url = new URL(url0)
|
||||||
|
const headers = {
|
||||||
|
'user-agent': 'setup-beam',
|
||||||
|
}
|
||||||
|
const GithubToken = getInput('github-token', false)
|
||||||
|
|
||||||
|
if (GithubToken) {
|
||||||
|
headers.authorization = `Bearer ${GithubToken}`
|
||||||
|
}
|
||||||
|
|
||||||
if (pageIdx !== null) {
|
if (pageIdx !== null) {
|
||||||
url.searchParams.append('page', pageIdx)
|
url.searchParams.append('page', pageIdx)
|
||||||
}
|
}
|
||||||
https
|
https
|
||||||
.get(
|
.get(url, { headers }, (res) => {
|
||||||
url,
|
let data = ''
|
||||||
{
|
res.on('data', (chunk) => {
|
||||||
headers: { 'user-agent': 'setup-beam' },
|
data += chunk
|
||||||
},
|
})
|
||||||
(res) => {
|
res.on('end', () => {
|
||||||
let data = ''
|
if (res.statusCode >= 400 && res.statusCode <= 599) {
|
||||||
res.on('data', (chunk) => {
|
reject(
|
||||||
data += chunk
|
new Error(
|
||||||
})
|
`Got ${res.statusCode} from ${url}. Exiting with error`,
|
||||||
res.on('end', () => {
|
),
|
||||||
if (res.statusCode >= 400 && res.statusCode <= 599) {
|
)
|
||||||
reject(
|
} else {
|
||||||
new Error(
|
resolve(data)
|
||||||
`Got ${res.statusCode} from ${url}. Exiting with error`,
|
}
|
||||||
),
|
})
|
||||||
)
|
})
|
||||||
} else {
|
|
||||||
resolve(data)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.on('error', (err) => {
|
.on('error', (err) => {
|
||||||
reject(err)
|
reject(err)
|
||||||
})
|
})
|
||||||
@@ -7716,6 +7719,16 @@ function parseVersionFile(versionFilePath0) {
|
|||||||
return appVersions
|
return appVersions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function jsonParse(maybeJson) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(maybeJson)
|
||||||
|
} catch (exc) {
|
||||||
|
throw new Error(
|
||||||
|
`Got an exception when trying to parse non-JSON ${maybeJson}: ${exc}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getOTPVersion,
|
getOTPVersion,
|
||||||
getElixirVersion,
|
getElixirVersion,
|
||||||
|
|||||||
Vendored
+17
-1
@@ -4,10 +4,26 @@ $ErrorActionPreference="Stop"
|
|||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
Set-Location ${Env:RUNNER_TEMP}
|
||||||
|
|
||||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
|
||||||
$FILE_OUTPUT="gleam.zip"
|
$FILE_OUTPUT="gleam.zip"
|
||||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
$DIR_FOR_BIN=".setup-beam/gleam"
|
||||||
|
|
||||||
|
function Version-Greater-Than([string]${THIS_ONE}, [string]${REFERENCE}) {
|
||||||
|
$THIS_ONE=$THIS_ONE.replace('v', '')
|
||||||
|
$THIS_ONE=$THIS_ONE.replace('rc', '')
|
||||||
|
$THIS_ONE=$THIS_ONE.replace('-', '')
|
||||||
|
return [version]${THIS_ONE} -gt [version]${REFERENCE}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Uses-LLVM-Triplets([string]${THIS_VSN}) {
|
||||||
|
return "${THIS_VSN}" -eq "nightly" -or (Version-Greater-Than "${THIS_VSN}" "0.22.1")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Uses-LLVM-Triplets "$VSN") {
|
||||||
|
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||||
|
} else {
|
||||||
|
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
|
||||||
|
}
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||||
$ProgressPreference="Continue"
|
$ProgressPreference="Continue"
|
||||||
|
|||||||
Vendored
+4
-3
@@ -9,12 +9,13 @@ FILE_OUTPUT=gleam.tar.gz
|
|||||||
DIR_FOR_BIN=.setup-beam/gleam
|
DIR_FOR_BIN=.setup-beam/gleam
|
||||||
|
|
||||||
version_gt() {
|
version_gt() {
|
||||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
REFERENCE=$1
|
||||||
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$REFERENCE"
|
||||||
}
|
}
|
||||||
|
|
||||||
uses_llvm_triplets() {
|
uses_llvm_triplets() {
|
||||||
local version="$1"
|
local VERSION="$1"
|
||||||
test "$version" = "nightly" || version_gt "$version" "v0.22.1"
|
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
if uses_llvm_triplets "$VSN"
|
if uses_llvm_triplets "$VSN"
|
||||||
|
|||||||
Vendored
+8
-5
@@ -4,14 +4,17 @@ $ErrorActionPreference="Stop"
|
|||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
Set-Location ${Env:RUNNER_TEMP}
|
||||||
|
|
||||||
|
$FILE_INPUT="otp_win64_${VSN}.exe"
|
||||||
$FILE_OUTPUT="otp.exe"
|
$FILE_OUTPUT="otp.exe"
|
||||||
$ERL_ROOT = "${Env:RUNNER_TEMP}\.setup-beam\otp"
|
$DIR_FOR_BIN="${Env:RUNNER_TEMP}\.setup-beam\otp"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/otp_win64_${VSN}.exe" -OutFile "${FILE_OUTPUT}"
|
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||||
$ProgressPreference="Continue"
|
$ProgressPreference="Continue"
|
||||||
Start-Process "${FILE_OUTPUT}" "/S /D=${ERL_ROOT}" -Wait
|
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
||||||
|
$ProgressPreference="SilentlyContinue"
|
||||||
|
Start-Process "${FILE_OUTPUT}" "/S /D=${DIR_FOR_BIN}" -Wait
|
||||||
Write-Output "Installed Erlang/OTP version follows"
|
Write-Output "Installed Erlang/OTP version follows"
|
||||||
& "${ERL_ROOT}/bin/erl.exe" "+V" | Write-Output
|
& "${DIR_FOR_BIN}/bin/erl.exe" "+V" | Write-Output
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_OTP=${ERL_ROOT}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
"INSTALL_DIR_FOR_OTP=${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||||
|
|||||||
Vendored
+3
-1
@@ -7,6 +7,7 @@ Set-Location ${Env:RUNNER_TEMP}
|
|||||||
$FILE_INPUT="rebar3"
|
$FILE_INPUT="rebar3"
|
||||||
$FILE_OUTPUT="rebar3"
|
$FILE_OUTPUT="rebar3"
|
||||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||||
|
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
@@ -22,8 +23,9 @@ $ProgressPreference="Continue"
|
|||||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||||
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||||
type ${FILE_OUTPUT_PS1}
|
Write-Output "@echo off`r`nescript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} %*" | Out-File -FilePath "${FILE_OUTPUT_CMD}" -Encoding utf8 -Append
|
||||||
Move-Item "${FILE_OUTPUT_PS1}" "${DIR_FOR_BIN}/bin"
|
Move-Item "${FILE_OUTPUT_PS1}" "${DIR_FOR_BIN}/bin"
|
||||||
|
Move-Item "${FILE_OUTPUT_CMD}" "${DIR_FOR_BIN}/bin"
|
||||||
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
||||||
& "${DIR_FOR_BIN}/bin/rebar3" "version" | Write-Output
|
& "${DIR_FOR_BIN}/bin/rebar3" "version" | Write-Output
|
||||||
|
|
||||||
|
|||||||
Generated
+6
-6
@@ -1857,9 +1857,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/json5": {
|
"node_modules/json5": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
|
||||||
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": "^1.2.0"
|
"minimist": "^1.2.0"
|
||||||
@@ -4363,9 +4363,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"json5": {
|
"json5": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
|
||||||
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "^1.2.0"
|
"minimist": "^1.2.0"
|
||||||
|
|||||||
+17
-1
@@ -4,10 +4,26 @@ $ErrorActionPreference="Stop"
|
|||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
Set-Location ${Env:RUNNER_TEMP}
|
||||||
|
|
||||||
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
|
||||||
$FILE_OUTPUT="gleam.zip"
|
$FILE_OUTPUT="gleam.zip"
|
||||||
$DIR_FOR_BIN=".setup-beam/gleam"
|
$DIR_FOR_BIN=".setup-beam/gleam"
|
||||||
|
|
||||||
|
function Version-Greater-Than([string]${THIS_ONE}, [string]${REFERENCE}) {
|
||||||
|
$THIS_ONE=$THIS_ONE.replace('v', '')
|
||||||
|
$THIS_ONE=$THIS_ONE.replace('rc', '')
|
||||||
|
$THIS_ONE=$THIS_ONE.replace('-', '')
|
||||||
|
return [version]${THIS_ONE} -gt [version]${REFERENCE}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Uses-LLVM-Triplets([string]${THIS_VSN}) {
|
||||||
|
return "${THIS_VSN}" -eq "nightly" -or (Version-Greater-Than "${THIS_VSN}" "0.22.1")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Uses-LLVM-Triplets "$VSN") {
|
||||||
|
$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip"
|
||||||
|
} else {
|
||||||
|
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
|
||||||
|
}
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||||
$ProgressPreference="Continue"
|
$ProgressPreference="Continue"
|
||||||
|
|||||||
@@ -9,12 +9,13 @@ FILE_OUTPUT=gleam.tar.gz
|
|||||||
DIR_FOR_BIN=.setup-beam/gleam
|
DIR_FOR_BIN=.setup-beam/gleam
|
||||||
|
|
||||||
version_gt() {
|
version_gt() {
|
||||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
REFERENCE=$1
|
||||||
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$REFERENCE"
|
||||||
}
|
}
|
||||||
|
|
||||||
uses_llvm_triplets() {
|
uses_llvm_triplets() {
|
||||||
local version="$1"
|
local VERSION="$1"
|
||||||
test "$version" = "nightly" || version_gt "$version" "v0.22.1"
|
test "${VERSION}" = "nightly" || version_gt "${VERSION}" "v0.22.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
if uses_llvm_triplets "$VSN"
|
if uses_llvm_triplets "$VSN"
|
||||||
|
|||||||
+8
-5
@@ -4,14 +4,17 @@ $ErrorActionPreference="Stop"
|
|||||||
|
|
||||||
Set-Location ${Env:RUNNER_TEMP}
|
Set-Location ${Env:RUNNER_TEMP}
|
||||||
|
|
||||||
|
$FILE_INPUT="otp_win64_${VSN}.exe"
|
||||||
$FILE_OUTPUT="otp.exe"
|
$FILE_OUTPUT="otp.exe"
|
||||||
$ERL_ROOT = "${Env:RUNNER_TEMP}\.setup-beam\otp"
|
$DIR_FOR_BIN="${Env:RUNNER_TEMP}\.setup-beam\otp"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/otp_win64_${VSN}.exe" -OutFile "${FILE_OUTPUT}"
|
Invoke-WebRequest "https://github.com/erlang/otp/releases/download/OTP-${VSN}/${FILE_INPUT}" -OutFile "${FILE_OUTPUT}"
|
||||||
$ProgressPreference="Continue"
|
$ProgressPreference="Continue"
|
||||||
Start-Process "${FILE_OUTPUT}" "/S /D=${ERL_ROOT}" -Wait
|
New-Item "${DIR_FOR_BIN}" -ItemType Directory | Out-Null
|
||||||
|
$ProgressPreference="SilentlyContinue"
|
||||||
|
Start-Process "${FILE_OUTPUT}" "/S /D=${DIR_FOR_BIN}" -Wait
|
||||||
Write-Output "Installed Erlang/OTP version follows"
|
Write-Output "Installed Erlang/OTP version follows"
|
||||||
& "${ERL_ROOT}/bin/erl.exe" "+V" | Write-Output
|
& "${DIR_FOR_BIN}/bin/erl.exe" "+V" | Write-Output
|
||||||
|
|
||||||
"INSTALL_DIR_FOR_OTP=${ERL_ROOT}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
"INSTALL_DIR_FOR_OTP=${DIR_FOR_BIN}" | Out-File -FilePath ${Env:GITHUB_ENV} -Encoding utf8 -Append
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ Set-Location ${Env:RUNNER_TEMP}
|
|||||||
$FILE_INPUT="rebar3"
|
$FILE_INPUT="rebar3"
|
||||||
$FILE_OUTPUT="rebar3"
|
$FILE_OUTPUT="rebar3"
|
||||||
$FILE_OUTPUT_PS1="rebar3.ps1"
|
$FILE_OUTPUT_PS1="rebar3.ps1"
|
||||||
|
$FILE_OUTPUT_CMD="rebar3.cmd"
|
||||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
@@ -22,8 +23,9 @@ $ProgressPreference="Continue"
|
|||||||
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
New-Item "${DIR_FOR_BIN}/bin" -ItemType Directory | Out-Null
|
||||||
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
Move-Item "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||||
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
Write-Output "& escript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} `${args}" | Out-File -FilePath "${FILE_OUTPUT_PS1}" -Encoding utf8 -Append
|
||||||
type ${FILE_OUTPUT_PS1}
|
Write-Output "@echo off`r`nescript.exe ${PWD}/${DIR_FOR_BIN}/bin/${FILE_OUTPUT} %*" | Out-File -FilePath "${FILE_OUTPUT_CMD}" -Encoding utf8 -Append
|
||||||
Move-Item "${FILE_OUTPUT_PS1}" "${DIR_FOR_BIN}/bin"
|
Move-Item "${FILE_OUTPUT_PS1}" "${DIR_FOR_BIN}/bin"
|
||||||
|
Move-Item "${FILE_OUTPUT_CMD}" "${DIR_FOR_BIN}/bin"
|
||||||
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
Write-Output "Installed rebar3 version${REBAR3_NIGHTLY} follows"
|
||||||
& "${DIR_FOR_BIN}/bin/rebar3" "version" | Write-Output
|
& "${DIR_FOR_BIN}/bin/rebar3" "version" | Write-Output
|
||||||
|
|
||||||
|
|||||||
+39
-26
@@ -247,7 +247,7 @@ async function getOTPVersions(osVersion) {
|
|||||||
})
|
})
|
||||||
} else if (process.platform === 'win32') {
|
} else if (process.platform === 'win32') {
|
||||||
otpVersionsListings.forEach((otpVersionsListing) => {
|
otpVersionsListings.forEach((otpVersionsListing) => {
|
||||||
JSON.parse(otpVersionsListing)
|
jsonParse(otpVersionsListing)
|
||||||
.map((x) => x.assets)
|
.map((x) => x.assets)
|
||||||
.flat()
|
.flat()
|
||||||
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
.filter((x) => x.name.match(/^otp_win64_.*.exe$/))
|
||||||
@@ -294,7 +294,7 @@ async function getGleamVersions() {
|
|||||||
)
|
)
|
||||||
const gleamVersionsListing = []
|
const gleamVersionsListing = []
|
||||||
resultJSONs.forEach((resultJSON) => {
|
resultJSONs.forEach((resultJSON) => {
|
||||||
JSON.parse(resultJSON)
|
jsonParse(resultJSON)
|
||||||
.map((x) => x.tag_name)
|
.map((x) => x.tag_name)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach((v) => gleamVersionsListing.push(v))
|
.forEach((v) => gleamVersionsListing.push(v))
|
||||||
@@ -309,7 +309,7 @@ async function getRebar3Versions() {
|
|||||||
)
|
)
|
||||||
const rebar3VersionsListing = []
|
const rebar3VersionsListing = []
|
||||||
resultJSONs.forEach((resultJSON) => {
|
resultJSONs.forEach((resultJSON) => {
|
||||||
JSON.parse(resultJSON)
|
jsonParse(resultJSON)
|
||||||
.map((x) => x.tag_name)
|
.map((x) => x.tag_name)
|
||||||
.sort()
|
.sort()
|
||||||
.forEach((v) => rebar3VersionsListing.push(v))
|
.forEach((v) => rebar3VersionsListing.push(v))
|
||||||
@@ -416,33 +416,36 @@ async function get(url0, pageIdxs) {
|
|||||||
function getPage(pageIdx) {
|
function getPage(pageIdx) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const url = new URL(url0)
|
const url = new URL(url0)
|
||||||
|
const headers = {
|
||||||
|
'user-agent': 'setup-beam',
|
||||||
|
}
|
||||||
|
const GithubToken = getInput('github-token', false)
|
||||||
|
|
||||||
|
if (GithubToken) {
|
||||||
|
headers.authorization = `Bearer ${GithubToken}`
|
||||||
|
}
|
||||||
|
|
||||||
if (pageIdx !== null) {
|
if (pageIdx !== null) {
|
||||||
url.searchParams.append('page', pageIdx)
|
url.searchParams.append('page', pageIdx)
|
||||||
}
|
}
|
||||||
https
|
https
|
||||||
.get(
|
.get(url, { headers }, (res) => {
|
||||||
url,
|
let data = ''
|
||||||
{
|
res.on('data', (chunk) => {
|
||||||
headers: { 'user-agent': 'setup-beam' },
|
data += chunk
|
||||||
},
|
})
|
||||||
(res) => {
|
res.on('end', () => {
|
||||||
let data = ''
|
if (res.statusCode >= 400 && res.statusCode <= 599) {
|
||||||
res.on('data', (chunk) => {
|
reject(
|
||||||
data += chunk
|
new Error(
|
||||||
})
|
`Got ${res.statusCode} from ${url}. Exiting with error`,
|
||||||
res.on('end', () => {
|
),
|
||||||
if (res.statusCode >= 400 && res.statusCode <= 599) {
|
)
|
||||||
reject(
|
} else {
|
||||||
new Error(
|
resolve(data)
|
||||||
`Got ${res.statusCode} from ${url}. Exiting with error`,
|
}
|
||||||
),
|
})
|
||||||
)
|
})
|
||||||
} else {
|
|
||||||
resolve(data)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.on('error', (err) => {
|
.on('error', (err) => {
|
||||||
reject(err)
|
reject(err)
|
||||||
})
|
})
|
||||||
@@ -523,6 +526,16 @@ function parseVersionFile(versionFilePath0) {
|
|||||||
return appVersions
|
return appVersions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function jsonParse(maybeJson) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(maybeJson)
|
||||||
|
} catch (exc) {
|
||||||
|
throw new Error(
|
||||||
|
`Got an exception when trying to parse non-JSON ${maybeJson}: ${exc}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getOTPVersion,
|
getOTPVersion,
|
||||||
getElixirVersion,
|
getElixirVersion,
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user