mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-28 09:36:07 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 730ac65cba | |||
| 3179686d1f | |||
| 65219deb69 | |||
| c71c5c91bb | |||
| e6ab31075d | |||
| 3250a83e5a | |||
| ccc3fdea3c | |||
| 782d47cc60 | |||
| c255c7e97f |
@@ -17,7 +17,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 12
|
node-version: '14'
|
||||||
- run: npm install -g npm
|
- run: npm install -g npm
|
||||||
- run: npm install
|
- run: npm install
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
@@ -38,7 +38,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 12
|
node-version: '14'
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm test
|
- run: npm test
|
||||||
|
|
||||||
@@ -49,6 +49,6 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 12
|
node-version: '14'
|
||||||
- run: npm install --production
|
- run: npm install --production
|
||||||
- run: npm test
|
- run: npm test
|
||||||
|
|||||||
@@ -21,30 +21,19 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
combo:
|
combo:
|
||||||
- elixir-version: 'v1.0'
|
- otp-version: '24'
|
||||||
otp-version: '17'
|
rebar3-version: 'nightly'
|
||||||
os: 'ubuntu-16.04'
|
os: 'ubuntu-latest'
|
||||||
- elixir-version: 'v1.0'
|
- elixir-version: 'v1.0'
|
||||||
otp-version: '17'
|
otp-version: '17'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-18.04'
|
||||||
- elixir-version: 'v1.1'
|
|
||||||
otp-version: '18'
|
|
||||||
os: 'ubuntu-16.04'
|
|
||||||
- elixir-version: 'v1.1'
|
- elixir-version: 'v1.1'
|
||||||
otp-version: '18'
|
otp-version: '18'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-18.04'
|
||||||
- elixir-version: 'v1.2'
|
|
||||||
otp-version: '19'
|
|
||||||
rebar3-version: '3.10'
|
|
||||||
os: 'ubuntu-16.04'
|
|
||||||
- elixir-version: 'v1.2'
|
- elixir-version: 'v1.2'
|
||||||
otp-version: '19'
|
otp-version: '19'
|
||||||
rebar3-version: '3.10'
|
rebar3-version: '3.10'
|
||||||
os: 'ubuntu-18.04'
|
os: 'ubuntu-18.04'
|
||||||
- elixir-version: 'v1.4'
|
|
||||||
otp-version: '20'
|
|
||||||
rebar3-version: '3.11'
|
|
||||||
os: 'ubuntu-16.04'
|
|
||||||
- elixir-version: 'v1.4'
|
- elixir-version: 'v1.4'
|
||||||
otp-version: '20'
|
otp-version: '20'
|
||||||
rebar3-version: '3.6.0'
|
rebar3-version: '3.6.0'
|
||||||
@@ -53,10 +42,6 @@ jobs:
|
|||||||
otp-version: '20'
|
otp-version: '20'
|
||||||
rebar3-version: '3.11'
|
rebar3-version: '3.11'
|
||||||
os: 'ubuntu-20.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.6'
|
|
||||||
otp-version: '21'
|
|
||||||
rebar3-version: '3.12'
|
|
||||||
os: 'ubuntu-16.04'
|
|
||||||
- elixir-version: 'v1.6'
|
- elixir-version: 'v1.6'
|
||||||
otp-version: '21'
|
otp-version: '21'
|
||||||
rebar3-version: '3.12'
|
rebar3-version: '3.12'
|
||||||
@@ -65,10 +50,6 @@ jobs:
|
|||||||
otp-version: '21'
|
otp-version: '21'
|
||||||
rebar3-version: '3.12'
|
rebar3-version: '3.12'
|
||||||
os: 'ubuntu-20.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.7'
|
|
||||||
otp-version: '22'
|
|
||||||
rebar3-version: '3.13'
|
|
||||||
os: 'ubuntu-16.04'
|
|
||||||
- elixir-version: 'v1.7'
|
- elixir-version: 'v1.7'
|
||||||
otp-version: '22'
|
otp-version: '22'
|
||||||
rebar3-version: '3.13'
|
rebar3-version: '3.13'
|
||||||
@@ -77,10 +58,6 @@ jobs:
|
|||||||
otp-version: '22'
|
otp-version: '22'
|
||||||
rebar3-version: '3.13'
|
rebar3-version: '3.13'
|
||||||
os: 'ubuntu-20.04'
|
os: 'ubuntu-20.04'
|
||||||
- elixir-version: 'v1.10'
|
|
||||||
otp-version: '23'
|
|
||||||
rebar3-version: '3.14'
|
|
||||||
os: 'ubuntu-16.04'
|
|
||||||
- elixir-version: 'v1.10'
|
- elixir-version: 'v1.10'
|
||||||
otp-version: '23'
|
otp-version: '23'
|
||||||
rebar3-version: '3.14'
|
rebar3-version: '3.14'
|
||||||
@@ -111,6 +88,12 @@ jobs:
|
|||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
rebar3-version: '3.16'
|
rebar3-version: '3.16'
|
||||||
os: 'ubuntu-latest'
|
os: 'ubuntu-latest'
|
||||||
|
- gleam-version: '0.19.0-rc3'
|
||||||
|
otp-version: '24'
|
||||||
|
os: 'ubuntu-latest'
|
||||||
|
- gleam-version: '0.19.0-rc3'
|
||||||
|
otp-version: false
|
||||||
|
os: 'ubuntu-latest'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Use erlef/setup-beam
|
- name: Use erlef/setup-beam
|
||||||
@@ -124,6 +107,7 @@ jobs:
|
|||||||
version-type: ${{matrix.combo.version-type}}
|
version-type: ${{matrix.combo.version-type}}
|
||||||
- name: Erlang/OTP version (action)
|
- name: Erlang/OTP version (action)
|
||||||
run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}"
|
run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}"
|
||||||
|
if: ${{matrix.combo.otp-version}}
|
||||||
- name: Elixir version (action)
|
- name: Elixir version (action)
|
||||||
run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}"
|
run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}"
|
||||||
if: ${{matrix.combo.elixir-version}}
|
if: ${{matrix.combo.elixir-version}}
|
||||||
@@ -155,3 +139,13 @@ jobs:
|
|||||||
cd test-projects/gleam_rebar3
|
cd test-projects/gleam_rebar3
|
||||||
rebar3 eunit
|
rebar3 eunit
|
||||||
if: ${{matrix.combo.gleam-version}}
|
if: ${{matrix.combo.gleam-version}}
|
||||||
|
- name: Type check Gleam project (without installing Erlang/OTP)
|
||||||
|
run: |
|
||||||
|
cd test-projects/gleam_gleam
|
||||||
|
gleam check
|
||||||
|
if: ${{ matrix.combo.gleam-version && !matrix.combo.otp-version }}
|
||||||
|
- name: Run Gleam project tests (without `rebar3`)
|
||||||
|
run: |
|
||||||
|
cd test-projects/gleam_gleam
|
||||||
|
gleam test
|
||||||
|
if: ${{ matrix.combo.gleam-version && matrix.combo.otp-version && !matrix.combo.rebar3-version }}
|
||||||
|
|||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
git config user.name "GitHub Actions"
|
||||||
|
git config user.email "actions@user.noreply.github.com"
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
npm run licenses
|
||||||
|
|
||||||
|
git add 3RD_PARTY_LICENSES
|
||||||
|
git commit -m "Update 3rd party licenses" || true
|
||||||
|
git push origin
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
name: update_3rd_party_licenses
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 12 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update:
|
||||||
|
name: Update 3rd party licenses
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- run:
|
||||||
|
./.github/workflows/update_3rd_party_licenses.sh
|
||||||
@@ -24,27 +24,12 @@ jobs:
|
|||||||
- otp-version: '24.0.2'
|
- otp-version: '24.0.2'
|
||||||
rebar3-version: '3.16'
|
rebar3-version: '3.16'
|
||||||
os: 'windows-2019'
|
os: 'windows-2019'
|
||||||
|
- otp-version: '24.0.2'
|
||||||
|
rebar3-version: 'nightly'
|
||||||
|
os: 'windows-2019'
|
||||||
- otp-version: '23.0'
|
- otp-version: '23.0'
|
||||||
rebar3-version: '3.15'
|
rebar3-version: '3.15'
|
||||||
os: 'windows-2019'
|
os: 'windows-2019'
|
||||||
- otp-version: '24.0.2'
|
|
||||||
rebar3-version: '3.16'
|
|
||||||
os: 'windows-2016'
|
|
||||||
- otp-version: '23.0'
|
|
||||||
rebar3-version: '3.15'
|
|
||||||
os: 'windows-2016'
|
|
||||||
- otp-version: '22.3'
|
|
||||||
rebar3-version: '3.15'
|
|
||||||
os: 'windows-2016'
|
|
||||||
- otp-version: '22.0'
|
|
||||||
rebar3-version: '3.15'
|
|
||||||
os: 'windows-2016'
|
|
||||||
- otp-version: '21.3'
|
|
||||||
rebar3-version: '3.15'
|
|
||||||
os: 'windows-2016'
|
|
||||||
- otp-version: '21.0'
|
|
||||||
rebar3-version: '3.15'
|
|
||||||
os: 'windows-2016'
|
|
||||||
- elixir-version: 'v1.10'
|
- elixir-version: 'v1.10'
|
||||||
otp-version: '23'
|
otp-version: '23'
|
||||||
rebar3-version: '3.14'
|
rebar3-version: '3.14'
|
||||||
|
|||||||
+1574
-34
File diff suppressed because it is too large
Load Diff
@@ -11,19 +11,22 @@
|
|||||||
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:
|
||||||
|
|
||||||
- installing Erlang/OTP
|
- installing [Erlang/OTP](https://www.erlang.org/)
|
||||||
- optionally, installing Elixir
|
- optionally, installing [Elixir](https://elixir-lang.org/)
|
||||||
- optionally, installing Gleam
|
- optionally, installing [Gleam](https://gleam.run/)
|
||||||
- optionally, installing `rebar3`
|
- optionally, installing [`rebar3`](https://www.rebar3.org/)
|
||||||
- optionally, installing `hex`
|
- optionally, installing [`hex`](https://hex.pm/)
|
||||||
|
- optionally, having
|
||||||
|
[problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) show
|
||||||
|
warnings and errors on pull requestsotp-version: false)
|
||||||
|
|
||||||
**Note** Currently, this action only supports Actions' `ubuntu-` and `windows-` runtimes.
|
**Note**: currently, this action only supports Actions' `ubuntu-` and `windows-` runtimes.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
See [action.yml](action.yml) for the action's specification.
|
See [action.yml](action.yml) for the action's specification.
|
||||||
|
|
||||||
**Note**: The Erlang/OTP release version specification is [relatively
|
**Note**: the Erlang/OTP release version specification is [relatively
|
||||||
complex](http://erlang.org/doc/system_principles/versions.html#version-scheme).
|
complex](http://erlang.org/doc/system_principles/versions.html#version-scheme).
|
||||||
For best results, we recommend specifying exact
|
For best results, we recommend specifying exact
|
||||||
versions, and setting option `version-type` to `strict`.
|
versions, and setting option `version-type` to `strict`.
|
||||||
@@ -46,10 +49,8 @@ and Erlang/OTP.
|
|||||||
|
|
||||||
| Operating system | Erlang/OTP | Status
|
| Operating system | Erlang/OTP | Status
|
||||||
|- |- |-
|
|- |- |-
|
||||||
| ubuntu-16.04 | 17 - 24 | ✅
|
|
||||||
| ubuntu-18.04 | 17 - 24 | ✅
|
| ubuntu-18.04 | 17 - 24 | ✅
|
||||||
| ubuntu-20.04 | 20 - 24 | ✅
|
| ubuntu-20.04 | 20 - 24 | ✅
|
||||||
| windows-2016 | 21* - 24 | ✅
|
|
||||||
| windows-2019 | 21* - 24 | ✅
|
| windows-2019 | 21* - 24 | ✅
|
||||||
|
|
||||||
**Note** *: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3, 22.0, etc.
|
**Note** *: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3, 22.0, etc.
|
||||||
@@ -61,10 +62,8 @@ uses that to download assets:
|
|||||||
|
|
||||||
| ImageOS | Operating system
|
| ImageOS | Operating system
|
||||||
|- |-
|
|- |-
|
||||||
| ubuntu16 | ubuntu-16.04
|
|
||||||
| ubuntu18 | ubuntu-18.04
|
| ubuntu18 | ubuntu-18.04
|
||||||
| ubuntu20 | ubuntu-20.04
|
| ubuntu20 | ubuntu-20.04
|
||||||
| win16 | windows-2016
|
|
||||||
| win19 | windows-2019
|
| win19 | windows-2019
|
||||||
|
|
||||||
as per the following example:
|
as per the following example:
|
||||||
@@ -148,7 +147,7 @@ jobs:
|
|||||||
- run: rebar3 ct
|
- run: rebar3 ct
|
||||||
```
|
```
|
||||||
|
|
||||||
### Example (Gleam + `rebar3`, on Ubuntu)
|
### Example (Gleam on Ubuntu)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# create this in .github/workflows/ci.yml
|
# create this in .github/workflows/ci.yml
|
||||||
@@ -162,14 +161,35 @@ jobs:
|
|||||||
- uses: erlef/setup-beam@v1
|
- uses: erlef/setup-beam@v1
|
||||||
with:
|
with:
|
||||||
otp-version: '24'
|
otp-version: '24'
|
||||||
gleam-version: '0.16'
|
gleam-version: '0.19.0-rc3'
|
||||||
rebar3-version: '3.16'
|
- run: gleam test
|
||||||
- run: rebar3 ct
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Example (Gleam on Ubuntu without OTP)
|
||||||
|
|
||||||
|
```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: false
|
||||||
|
gleam-version: '0.19.0-rc3'
|
||||||
|
- run: gleam check
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note**: the `otp-version: false` input is only applicable when installing Gleam.
|
||||||
|
|
||||||
## Elixir Problem Matchers
|
## Elixir Problem Matchers
|
||||||
|
|
||||||
The Elixir Problem Matchers in this repository are adapted from [here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118). See [MATCHER_NOTICE](MATCHER_NOTICE.md) for license details.
|
The Elixir Problem Matchers in this repository are adapted from
|
||||||
|
[here](https://github.com/fr1zle/vscode-elixir/blob/45eddb589acd7ac98e0c7305d1c2b24668ca709a/package.json#L70-L118).
|
||||||
|
See [MATCHER_NOTICE](MATCHER_NOTICE.md) for license details.
|
||||||
|
|
||||||
## Action versioning
|
## Action versioning
|
||||||
|
|
||||||
@@ -179,9 +199,9 @@ The Elixir Problem Matchers in this repository are adapted from [here](https://g
|
|||||||
- `@v1.8`: the latest in the `1.8.z` series (this tag is movable),
|
- `@v1.8`: the latest in the `1.8.z` series (this tag is movable),
|
||||||
- `@v1.8.0`: release `1.8.0` (this tag is not movable).
|
- `@v1.8.0`: release `1.8.0` (this tag is not movable).
|
||||||
|
|
||||||
To prevent issues in CI (unless you're OK with potential incompatibility between versions - we
|
We make a real effort to not introduce incompatibilities without changing the major
|
||||||
make real a effort to not introduce those without bumping major) we suggest you to use `@vx.y.z`,
|
version number. To be extra safe against changes causing issues in your CI you should specify
|
||||||
whenever possible.
|
an exact version with `@vx.y.z`.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
+12
-5
@@ -8,24 +8,31 @@ branding:
|
|||||||
color: blue
|
color: blue
|
||||||
icon: code
|
icon: code
|
||||||
inputs:
|
inputs:
|
||||||
|
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:
|
elixir-version:
|
||||||
description: Version range or exact version of Elixir to use
|
description: Version range or exact version of Elixir to use
|
||||||
otp-version:
|
|
||||||
description: Version range or exact version of Erlang/OTP to use
|
|
||||||
gleam-version:
|
gleam-version:
|
||||||
description: Version range or exact version of Gleam to use
|
description: Version range or exact version of Gleam to use
|
||||||
install-hex:
|
install-hex:
|
||||||
description: Whether to install Hex (with Mix)
|
description: Whether to install Hex (with mix local.hex
|
||||||
|
when installing Elixir)
|
||||||
default: true
|
default: true
|
||||||
install-rebar:
|
install-rebar:
|
||||||
description: Whether to install Rebar (with Mix)
|
description: Whether to install Rebar (with mix local.rebar
|
||||||
|
when installing Elixir)
|
||||||
default: true
|
default: true
|
||||||
rebar3-version:
|
rebar3-version:
|
||||||
description: Version range or exact version of rebar3 to use
|
description: Version range or exact version of rebar3 to use (or nightly)
|
||||||
version-type:
|
version-type:
|
||||||
description: strict means the versions are take as-are; loose means we try
|
description: strict means the versions are take as-are; loose means we try
|
||||||
to guess versions based on semver rules
|
to guess versions based on semver rules
|
||||||
default: loose
|
default: loose
|
||||||
|
disable_problem_matchers:
|
||||||
|
description: whether to have the problem matchers present in the results (or not)
|
||||||
|
default: false
|
||||||
outputs:
|
outputs:
|
||||||
elixir-version:
|
elixir-version:
|
||||||
description: Exact version of Elixir that was installed
|
description: Exact version of Elixir that was installed
|
||||||
|
|||||||
Vendored
+34
-22
@@ -4687,25 +4687,29 @@ async function main() {
|
|||||||
|
|
||||||
const osVersion = getRunnerOSVersion()
|
const osVersion = getRunnerOSVersion()
|
||||||
const otpSpec = core.getInput('otp-version', { required: true })
|
const otpSpec = core.getInput('otp-version', { required: true })
|
||||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
|
||||||
|
|
||||||
const elixirSpec = core.getInput('elixir-version', { required: false })
|
const elixirSpec = core.getInput('elixir-version', { required: false })
|
||||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
const gleamSpec = core.getInput('gleam-version', { required: false })
|
||||||
if (elixirInstalled === true) {
|
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||||
const shouldMixRebar = core.getInput('install-rebar', {
|
|
||||||
required: false,
|
if (otpSpec !== 'false') {
|
||||||
})
|
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||||
await mix(shouldMixRebar, 'rebar')
|
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||||
const shouldMixHex = core.getInput('install-hex', {
|
|
||||||
required: false,
|
if (elixirInstalled === true) {
|
||||||
})
|
const shouldMixRebar = core.getInput('install-rebar', {
|
||||||
await mix(shouldMixHex, 'hex')
|
required: false,
|
||||||
|
})
|
||||||
|
await mix(shouldMixRebar, 'rebar')
|
||||||
|
const shouldMixHex = core.getInput('install-hex', {
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
await mix(shouldMixHex, 'hex')
|
||||||
|
}
|
||||||
|
} else if (!gleamSpec) {
|
||||||
|
throw new Error('otp-version=false is only available when installing Gleam')
|
||||||
}
|
}
|
||||||
|
|
||||||
const gleamSpec = core.getInput('gleam-version', { required: false })
|
|
||||||
await maybeInstallGleam(gleamSpec)
|
await maybeInstallGleam(gleamSpec)
|
||||||
|
|
||||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
|
||||||
await maybeInstallRebar3(rebar3Spec)
|
await maybeInstallRebar3(rebar3Spec)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4738,10 +4742,15 @@ async function maybeInstallElixir(elixirSpec, otpVersion) {
|
|||||||
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
||||||
await installer.installElixir(elixirVersion)
|
await installer.installElixir(elixirVersion)
|
||||||
core.setOutput('elixir-version', elixirVersion)
|
core.setOutput('elixir-version', elixirVersion)
|
||||||
const matchersPath = __nccwpck_require__.ab + ".github"
|
const disableProblemMatchers = core.getInput('disable_problem_matchers', {
|
||||||
console.log(
|
required: false,
|
||||||
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
})
|
||||||
)
|
if (!disableProblemMatchers) {
|
||||||
|
const matchersPath = __nccwpck_require__.ab + ".github"
|
||||||
|
console.log(
|
||||||
|
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
||||||
console.log('##[endgroup]')
|
console.log('##[endgroup]')
|
||||||
|
|
||||||
@@ -4780,9 +4789,14 @@ async function maybeInstallGleam(gleamSpec) {
|
|||||||
|
|
||||||
async function maybeInstallRebar3(rebar3Spec) {
|
async function maybeInstallRebar3(rebar3Spec) {
|
||||||
let installed = false
|
let installed = false
|
||||||
|
let rebar3Version
|
||||||
|
|
||||||
if (rebar3Spec) {
|
if (rebar3Spec) {
|
||||||
const rebar3Version = await getRebar3Version(rebar3Spec)
|
if (rebar3Spec === 'nightly') {
|
||||||
|
rebar3Version = 'nightly'
|
||||||
|
} else {
|
||||||
|
rebar3Version = await getRebar3Version(rebar3Spec)
|
||||||
|
}
|
||||||
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
||||||
await installer.installRebar3(rebar3Version)
|
await installer.installRebar3(rebar3Version)
|
||||||
core.setOutput('rebar3-version', rebar3Version)
|
core.setOutput('rebar3-version', rebar3Version)
|
||||||
@@ -5060,10 +5074,8 @@ function sortVersions(left, right) {
|
|||||||
|
|
||||||
function getRunnerOSVersion() {
|
function getRunnerOSVersion() {
|
||||||
const ImageOSToContainer = {
|
const ImageOSToContainer = {
|
||||||
ubuntu16: 'ubuntu-16.04',
|
|
||||||
ubuntu18: 'ubuntu-18.04',
|
ubuntu18: 'ubuntu-18.04',
|
||||||
ubuntu20: 'ubuntu-20.04',
|
ubuntu20: 'ubuntu-20.04',
|
||||||
win16: 'windows-2016',
|
|
||||||
win19: 'windows-2019',
|
win19: 'windows-2019',
|
||||||
}
|
}
|
||||||
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
|
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
|
||||||
|
|||||||
Vendored
+9
-2
@@ -10,12 +10,19 @@ $FILE_OUTPUT_PS1="rebar3.ps1"
|
|||||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}" -OutFile "$FILE_OUTPUT"
|
$REBAR3_TARGET="https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
||||||
|
$REBAR3_NIGHTLY=""
|
||||||
|
If ( $VSN -eq "nightly" )
|
||||||
|
{
|
||||||
|
$REBAR3_TARGET="https://s3.amazonaws.com/rebar3-nightly/rebar3"
|
||||||
|
$REBAR3_NIGHTLY=" (from nightly build)"
|
||||||
|
}
|
||||||
|
Invoke-WebRequest "$REBAR3_TARGET" -OutFile "$FILE_OUTPUT"
|
||||||
$ProgressPreference="Continue"
|
$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
|
type $FILE_OUTPUT_PS1
|
||||||
Move-Item "$FILE_OUTPUT_PS1" "$DIR_FOR_BIN/bin"
|
Move-Item "$FILE_OUTPUT_PS1" "$DIR_FOR_BIN/bin"
|
||||||
Write-Output "Installed rebar3 version 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
|
||||||
|
|||||||
Vendored
+8
-2
@@ -9,9 +9,15 @@ FILE_INPUT=rebar3
|
|||||||
FILE_OUTPUT=rebar3
|
FILE_OUTPUT=rebar3
|
||||||
DIR_FOR_BIN=.setup-beam/rebar3
|
DIR_FOR_BIN=.setup-beam/rebar3
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
REBAR3_TARGET="https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
||||||
|
REBAR3_NIGHTLY=""
|
||||||
|
if [ "${VSN}" == "nightly" ]; then
|
||||||
|
REBAR3_TARGET="https://s3.amazonaws.com/rebar3-nightly/rebar3"
|
||||||
|
REBAR3_NIGHTLY=" (from nightly build)"
|
||||||
|
fi
|
||||||
|
wget -q -O "${FILE_OUTPUT}" "${REBAR3_TARGET}"
|
||||||
mkdir -p "${DIR_FOR_BIN}/bin"
|
mkdir -p "${DIR_FOR_BIN}/bin"
|
||||||
chmod +x "${FILE_OUTPUT}"
|
chmod +x "${FILE_OUTPUT}"
|
||||||
mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||||
echo "Installed rebar3 version follows"
|
echo "Installed rebar3 version$REBAR3_NIGHTLY follows"
|
||||||
${DIR_FOR_BIN}/bin/rebar3 version
|
${DIR_FOR_BIN}/bin/rebar3 version
|
||||||
|
|||||||
Generated
+304
-495
File diff suppressed because it is too large
Load Diff
+4
-1
@@ -8,7 +8,7 @@
|
|||||||
"jslint": "eslint src/**/*.js && eslint __tests__/**/*.js",
|
"jslint": "eslint src/**/*.js && eslint __tests__/**/*.js",
|
||||||
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
|
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
|
||||||
"markdownlint": "markdownlint *.md",
|
"markdownlint": "markdownlint *.md",
|
||||||
"shellcheck": "shellcheck src/install-*.sh",
|
"shellcheck": "shellcheck src/install-*.sh .github/workflows/*.sh",
|
||||||
"test": "node __tests__/setup-beam.test.js && node ./__tests__/problem-matchers.test.js",
|
"test": "node __tests__/setup-beam.test.js && node ./__tests__/problem-matchers.test.js",
|
||||||
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml"
|
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml"
|
||||||
},
|
},
|
||||||
@@ -26,6 +26,9 @@
|
|||||||
"@vercel/ncc": "0.27.0",
|
"@vercel/ncc": "0.27.0",
|
||||||
"eslint": "7.22.0",
|
"eslint": "7.22.0",
|
||||||
"eslint-config-airbnb": "v18.2.1",
|
"eslint-config-airbnb": "v18.2.1",
|
||||||
|
"eslint-plugin-import": "^2.24.2",
|
||||||
|
"eslint-plugin-jsx-a11y": "^6.4.1",
|
||||||
|
"eslint-plugin-react": "^7.25.1",
|
||||||
"husky": "5.2.0",
|
"husky": "5.2.0",
|
||||||
"markdownlint": "0.23.1",
|
"markdownlint": "0.23.1",
|
||||||
"prettier": "2.2.1",
|
"prettier": "2.2.1",
|
||||||
|
|||||||
@@ -10,12 +10,19 @@ $FILE_OUTPUT_PS1="rebar3.ps1"
|
|||||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||||
|
|
||||||
$ProgressPreference="SilentlyContinue"
|
$ProgressPreference="SilentlyContinue"
|
||||||
Invoke-WebRequest "https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}" -OutFile "$FILE_OUTPUT"
|
$REBAR3_TARGET="https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
||||||
|
$REBAR3_NIGHTLY=""
|
||||||
|
If ( $VSN -eq "nightly" )
|
||||||
|
{
|
||||||
|
$REBAR3_TARGET="https://s3.amazonaws.com/rebar3-nightly/rebar3"
|
||||||
|
$REBAR3_NIGHTLY=" (from nightly build)"
|
||||||
|
}
|
||||||
|
Invoke-WebRequest "$REBAR3_TARGET" -OutFile "$FILE_OUTPUT"
|
||||||
$ProgressPreference="Continue"
|
$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
|
type $FILE_OUTPUT_PS1
|
||||||
Move-Item "$FILE_OUTPUT_PS1" "$DIR_FOR_BIN/bin"
|
Move-Item "$FILE_OUTPUT_PS1" "$DIR_FOR_BIN/bin"
|
||||||
Write-Output "Installed rebar3 version 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
|
||||||
|
|||||||
@@ -9,9 +9,15 @@ FILE_INPUT=rebar3
|
|||||||
FILE_OUTPUT=rebar3
|
FILE_OUTPUT=rebar3
|
||||||
DIR_FOR_BIN=.setup-beam/rebar3
|
DIR_FOR_BIN=.setup-beam/rebar3
|
||||||
|
|
||||||
wget -q -O "${FILE_OUTPUT}" "https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
REBAR3_TARGET="https://github.com/erlang/rebar3/releases/download/${VSN}/${FILE_INPUT}"
|
||||||
|
REBAR3_NIGHTLY=""
|
||||||
|
if [ "${VSN}" == "nightly" ]; then
|
||||||
|
REBAR3_TARGET="https://s3.amazonaws.com/rebar3-nightly/rebar3"
|
||||||
|
REBAR3_NIGHTLY=" (from nightly build)"
|
||||||
|
fi
|
||||||
|
wget -q -O "${FILE_OUTPUT}" "${REBAR3_TARGET}"
|
||||||
mkdir -p "${DIR_FOR_BIN}/bin"
|
mkdir -p "${DIR_FOR_BIN}/bin"
|
||||||
chmod +x "${FILE_OUTPUT}"
|
chmod +x "${FILE_OUTPUT}"
|
||||||
mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
mv "${FILE_OUTPUT}" "${DIR_FOR_BIN}/bin"
|
||||||
echo "Installed rebar3 version follows"
|
echo "Installed rebar3 version$REBAR3_NIGHTLY follows"
|
||||||
${DIR_FOR_BIN}/bin/rebar3 version
|
${DIR_FOR_BIN}/bin/rebar3 version
|
||||||
|
|||||||
+34
-22
@@ -15,25 +15,29 @@ async function main() {
|
|||||||
|
|
||||||
const osVersion = getRunnerOSVersion()
|
const osVersion = getRunnerOSVersion()
|
||||||
const otpSpec = core.getInput('otp-version', { required: true })
|
const otpSpec = core.getInput('otp-version', { required: true })
|
||||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
|
||||||
|
|
||||||
const elixirSpec = core.getInput('elixir-version', { required: false })
|
const elixirSpec = core.getInput('elixir-version', { required: false })
|
||||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
const gleamSpec = core.getInput('gleam-version', { required: false })
|
||||||
if (elixirInstalled === true) {
|
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||||
const shouldMixRebar = core.getInput('install-rebar', {
|
|
||||||
required: false,
|
if (otpSpec !== 'false') {
|
||||||
})
|
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||||
await mix(shouldMixRebar, 'rebar')
|
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||||
const shouldMixHex = core.getInput('install-hex', {
|
|
||||||
required: false,
|
if (elixirInstalled === true) {
|
||||||
})
|
const shouldMixRebar = core.getInput('install-rebar', {
|
||||||
await mix(shouldMixHex, 'hex')
|
required: false,
|
||||||
|
})
|
||||||
|
await mix(shouldMixRebar, 'rebar')
|
||||||
|
const shouldMixHex = core.getInput('install-hex', {
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
await mix(shouldMixHex, 'hex')
|
||||||
|
}
|
||||||
|
} else if (!gleamSpec) {
|
||||||
|
throw new Error('otp-version=false is only available when installing Gleam')
|
||||||
}
|
}
|
||||||
|
|
||||||
const gleamSpec = core.getInput('gleam-version', { required: false })
|
|
||||||
await maybeInstallGleam(gleamSpec)
|
await maybeInstallGleam(gleamSpec)
|
||||||
|
|
||||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
|
||||||
await maybeInstallRebar3(rebar3Spec)
|
await maybeInstallRebar3(rebar3Spec)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,10 +70,15 @@ async function maybeInstallElixir(elixirSpec, otpVersion) {
|
|||||||
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
||||||
await installer.installElixir(elixirVersion)
|
await installer.installElixir(elixirVersion)
|
||||||
core.setOutput('elixir-version', elixirVersion)
|
core.setOutput('elixir-version', elixirVersion)
|
||||||
const matchersPath = path.join(__dirname, '..', '.github')
|
const disableProblemMatchers = core.getInput('disable_problem_matchers', {
|
||||||
console.log(
|
required: false,
|
||||||
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
})
|
||||||
)
|
if (!disableProblemMatchers) {
|
||||||
|
const matchersPath = path.join(__dirname, '..', '.github')
|
||||||
|
console.log(
|
||||||
|
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/elixir/bin`)
|
||||||
console.log('##[endgroup]')
|
console.log('##[endgroup]')
|
||||||
|
|
||||||
@@ -108,9 +117,14 @@ async function maybeInstallGleam(gleamSpec) {
|
|||||||
|
|
||||||
async function maybeInstallRebar3(rebar3Spec) {
|
async function maybeInstallRebar3(rebar3Spec) {
|
||||||
let installed = false
|
let installed = false
|
||||||
|
let rebar3Version
|
||||||
|
|
||||||
if (rebar3Spec) {
|
if (rebar3Spec) {
|
||||||
const rebar3Version = await getRebar3Version(rebar3Spec)
|
if (rebar3Spec === 'nightly') {
|
||||||
|
rebar3Version = 'nightly'
|
||||||
|
} else {
|
||||||
|
rebar3Version = await getRebar3Version(rebar3Spec)
|
||||||
|
}
|
||||||
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
||||||
await installer.installRebar3(rebar3Version)
|
await installer.installRebar3(rebar3Version)
|
||||||
core.setOutput('rebar3-version', rebar3Version)
|
core.setOutput('rebar3-version', rebar3Version)
|
||||||
@@ -388,10 +402,8 @@ function sortVersions(left, right) {
|
|||||||
|
|
||||||
function getRunnerOSVersion() {
|
function getRunnerOSVersion() {
|
||||||
const ImageOSToContainer = {
|
const ImageOSToContainer = {
|
||||||
ubuntu16: 'ubuntu-16.04',
|
|
||||||
ubuntu18: 'ubuntu-18.04',
|
ubuntu18: 'ubuntu-18.04',
|
||||||
ubuntu20: 'ubuntu-20.04',
|
ubuntu20: 'ubuntu-20.04',
|
||||||
win16: 'windows-2016',
|
|
||||||
win19: 'windows-2019',
|
win19: 'windows-2019',
|
||||||
}
|
}
|
||||||
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
|
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
name: test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.0.0
|
||||||
|
- uses: erlef/setup-beam@v1.9.0
|
||||||
|
with:
|
||||||
|
otp-version: "23.2"
|
||||||
|
gleam-version: "0.19.0-rc3"
|
||||||
|
- run: gleam format --check src test
|
||||||
|
- run: gleam deps download
|
||||||
|
- run: gleam test
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
*.beam
|
||||||
|
*.ez
|
||||||
|
build
|
||||||
|
erl_crash.dump
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# gleam_gleam
|
||||||
|
|
||||||
|
A Gleam project
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
```sh
|
||||||
|
gleam run # Run the project
|
||||||
|
gleam test # Run the tests
|
||||||
|
gleam shell # Run an Erlang shell
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
If available on Hex this package can be added to your Gleam project.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
gleam add gleam_gleam
|
||||||
|
```
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
name = "gleam_gleam"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
# Fill out these fields if you intend to generate HTML documentation or publish
|
||||||
|
# your project to the Hex package manager.
|
||||||
|
#
|
||||||
|
# licences = ["Apache-2.0"]
|
||||||
|
# description = "A Gleam library..."
|
||||||
|
# repository = { type = "github", user = "username", repo = "project" }
|
||||||
|
# links = [{ title = "Website", href = "https://gleam.run" }]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
gleam_stdlib = "~> 0.18"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
gleeunit = "~> 0.5"
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# This file was generated by Gleam
|
||||||
|
# You typically do not need to edit this file
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
{ name = "gleam_stdlib", version = "0.19.2", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "FFA79EA12369F122B68885E694E097D6810402A2F86BFF48AAE9E40ACE654F4C" },
|
||||||
|
{ name = "gleeunit", version = "0.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "77701A5E5A565727E1EEAC9196FB878D544049B6331CD0305B5A69699135EA1C" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[requirements]
|
||||||
|
gleam_stdlib = "~> 0.18"
|
||||||
|
gleeunit = "~> 0.5"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import gleam/io
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
io.println("Hello from gleam_gleam!")
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import gleeunit
|
||||||
|
import gleeunit/should
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
gleeunit.main()
|
||||||
|
}
|
||||||
|
|
||||||
|
// gleeunit test functions end in `_test`
|
||||||
|
pub fn hello_world_test() {
|
||||||
|
1
|
||||||
|
|> should.equal(1)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user