mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-24 07:36:08 +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/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: '14'
|
||||
- run: npm install -g npm
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: '14'
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
|
||||
@@ -49,6 +49,6 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
node-version: '14'
|
||||
- run: npm install --production
|
||||
- run: npm test
|
||||
|
||||
@@ -21,30 +21,19 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
combo:
|
||||
- elixir-version: 'v1.0'
|
||||
otp-version: '17'
|
||||
os: 'ubuntu-16.04'
|
||||
- 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-16.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-16.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.11'
|
||||
os: 'ubuntu-16.04'
|
||||
- elixir-version: 'v1.4'
|
||||
otp-version: '20'
|
||||
rebar3-version: '3.6.0'
|
||||
@@ -53,10 +42,6 @@ jobs:
|
||||
otp-version: '20'
|
||||
rebar3-version: '3.11'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
os: 'ubuntu-16.04'
|
||||
- elixir-version: 'v1.6'
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
@@ -65,10 +50,6 @@ jobs:
|
||||
otp-version: '21'
|
||||
rebar3-version: '3.12'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
os: 'ubuntu-16.04'
|
||||
- elixir-version: 'v1.7'
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
@@ -77,10 +58,6 @@ jobs:
|
||||
otp-version: '22'
|
||||
rebar3-version: '3.13'
|
||||
os: 'ubuntu-20.04'
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
os: 'ubuntu-16.04'
|
||||
- elixir-version: 'v1.10'
|
||||
otp-version: '23'
|
||||
rebar3-version: '3.14'
|
||||
@@ -111,6 +88,12 @@ jobs:
|
||||
otp-version: '24'
|
||||
rebar3-version: '3.16'
|
||||
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:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Use erlef/setup-beam
|
||||
@@ -124,6 +107,7 @@ jobs:
|
||||
version-type: ${{matrix.combo.version-type}}
|
||||
- name: Erlang/OTP version (action)
|
||||
run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}"
|
||||
if: ${{matrix.combo.otp-version}}
|
||||
- name: Elixir version (action)
|
||||
run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}"
|
||||
if: ${{matrix.combo.elixir-version}}
|
||||
@@ -155,3 +139,13 @@ jobs:
|
||||
cd test-projects/gleam_rebar3
|
||||
rebar3 eunit
|
||||
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'
|
||||
rebar3-version: '3.16'
|
||||
os: 'windows-2019'
|
||||
- otp-version: '24.0.2'
|
||||
rebar3-version: 'nightly'
|
||||
os: 'windows-2019'
|
||||
- otp-version: '23.0'
|
||||
rebar3-version: '3.15'
|
||||
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'
|
||||
otp-version: '23'
|
||||
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
|
||||
workflow by:
|
||||
|
||||
- installing Erlang/OTP
|
||||
- optionally, installing Elixir
|
||||
- optionally, installing Gleam
|
||||
- optionally, installing `rebar3`
|
||||
- optionally, installing `hex`
|
||||
- installing [Erlang/OTP](https://www.erlang.org/)
|
||||
- optionally, installing [Elixir](https://elixir-lang.org/)
|
||||
- optionally, installing [Gleam](https://gleam.run/)
|
||||
- optionally, installing [`rebar3`](https://www.rebar3.org/)
|
||||
- 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
|
||||
|
||||
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).
|
||||
For best results, we recommend specifying exact
|
||||
versions, and setting option `version-type` to `strict`.
|
||||
@@ -46,10 +49,8 @@ and Erlang/OTP.
|
||||
|
||||
| Operating system | Erlang/OTP | Status
|
||||
|- |- |-
|
||||
| ubuntu-16.04 | 17 - 24 | ✅
|
||||
| ubuntu-18.04 | 17 - 24 | ✅
|
||||
| ubuntu-20.04 | 20 - 24 | ✅
|
||||
| windows-2016 | 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.
|
||||
@@ -61,10 +62,8 @@ uses that to download assets:
|
||||
|
||||
| ImageOS | Operating system
|
||||
|- |-
|
||||
| ubuntu16 | ubuntu-16.04
|
||||
| ubuntu18 | ubuntu-18.04
|
||||
| ubuntu20 | ubuntu-20.04
|
||||
| win16 | windows-2016
|
||||
| win19 | windows-2019
|
||||
|
||||
as per the following example:
|
||||
@@ -148,7 +147,7 @@ jobs:
|
||||
- run: rebar3 ct
|
||||
```
|
||||
|
||||
### Example (Gleam + `rebar3`, on Ubuntu)
|
||||
### Example (Gleam on Ubuntu)
|
||||
|
||||
```yaml
|
||||
# create this in .github/workflows/ci.yml
|
||||
@@ -162,14 +161,35 @@ jobs:
|
||||
- uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: '24'
|
||||
gleam-version: '0.16'
|
||||
rebar3-version: '3.16'
|
||||
- run: rebar3 ct
|
||||
gleam-version: '0.19.0-rc3'
|
||||
- run: gleam test
|
||||
```
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
|
||||
@@ -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.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
|
||||
make real a effort to not introduce those without bumping major) we suggest you to use `@vx.y.z`,
|
||||
whenever possible.
|
||||
We make a real effort to not introduce incompatibilities without changing the major
|
||||
version number. To be extra safe against changes causing issues in your CI you should specify
|
||||
an exact version with `@vx.y.z`.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
+12
-5
@@ -8,24 +8,31 @@ branding:
|
||||
color: blue
|
||||
icon: code
|
||||
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:
|
||||
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:
|
||||
description: Version range or exact version of Gleam to use
|
||||
install-hex:
|
||||
description: Whether to install Hex (with Mix)
|
||||
description: Whether to install Hex (with mix local.hex
|
||||
when installing Elixir)
|
||||
default: true
|
||||
install-rebar:
|
||||
description: Whether to install Rebar (with Mix)
|
||||
description: Whether to install Rebar (with mix local.rebar
|
||||
when installing Elixir)
|
||||
default: true
|
||||
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:
|
||||
description: strict means the versions are take as-are; loose means we try
|
||||
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)
|
||||
default: false
|
||||
outputs:
|
||||
elixir-version:
|
||||
description: Exact version of Elixir that was installed
|
||||
|
||||
Vendored
+34
-22
@@ -4687,25 +4687,29 @@ async function main() {
|
||||
|
||||
const osVersion = getRunnerOSVersion()
|
||||
const otpSpec = core.getInput('otp-version', { required: true })
|
||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||
|
||||
const elixirSpec = core.getInput('elixir-version', { required: false })
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||
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 gleamSpec = core.getInput('gleam-version', { required: false })
|
||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||
|
||||
if (otpSpec !== 'false') {
|
||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||
|
||||
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')
|
||||
}
|
||||
} 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)
|
||||
|
||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||
await maybeInstallRebar3(rebar3Spec)
|
||||
}
|
||||
|
||||
@@ -4738,10 +4742,15 @@ async function maybeInstallElixir(elixirSpec, otpVersion) {
|
||||
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
||||
await installer.installElixir(elixirVersion)
|
||||
core.setOutput('elixir-version', elixirVersion)
|
||||
const matchersPath = __nccwpck_require__.ab + ".github"
|
||||
console.log(
|
||||
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
||||
)
|
||||
const disableProblemMatchers = core.getInput('disable_problem_matchers', {
|
||||
required: false,
|
||||
})
|
||||
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`)
|
||||
console.log('##[endgroup]')
|
||||
|
||||
@@ -4780,9 +4789,14 @@ async function maybeInstallGleam(gleamSpec) {
|
||||
|
||||
async function maybeInstallRebar3(rebar3Spec) {
|
||||
let installed = false
|
||||
let rebar3Version
|
||||
|
||||
if (rebar3Spec) {
|
||||
const rebar3Version = await getRebar3Version(rebar3Spec)
|
||||
if (rebar3Spec === 'nightly') {
|
||||
rebar3Version = 'nightly'
|
||||
} else {
|
||||
rebar3Version = await getRebar3Version(rebar3Spec)
|
||||
}
|
||||
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
||||
await installer.installRebar3(rebar3Version)
|
||||
core.setOutput('rebar3-version', rebar3Version)
|
||||
@@ -5060,10 +5074,8 @@ function sortVersions(left, right) {
|
||||
|
||||
function getRunnerOSVersion() {
|
||||
const ImageOSToContainer = {
|
||||
ubuntu16: 'ubuntu-16.04',
|
||||
ubuntu18: 'ubuntu-18.04',
|
||||
ubuntu20: 'ubuntu-20.04',
|
||||
win16: 'windows-2016',
|
||||
win19: 'windows-2019',
|
||||
}
|
||||
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
|
||||
|
||||
Vendored
+9
-2
@@ -10,12 +10,19 @@ $FILE_OUTPUT_PS1="rebar3.ps1"
|
||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||
|
||||
$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"
|
||||
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
|
||||
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
|
||||
|
||||
Vendored
+8
-2
@@ -9,9 +9,15 @@ FILE_INPUT=rebar3
|
||||
FILE_OUTPUT=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"
|
||||
chmod +x "${FILE_OUTPUT}"
|
||||
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
|
||||
|
||||
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",
|
||||
"licenses": "yarn licenses generate-disclaimer > 3RD_PARTY_LICENSES",
|
||||
"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",
|
||||
"yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml"
|
||||
},
|
||||
@@ -26,6 +26,9 @@
|
||||
"@vercel/ncc": "0.27.0",
|
||||
"eslint": "7.22.0",
|
||||
"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",
|
||||
"markdownlint": "0.23.1",
|
||||
"prettier": "2.2.1",
|
||||
|
||||
@@ -10,12 +10,19 @@ $FILE_OUTPUT_PS1="rebar3.ps1"
|
||||
$DIR_FOR_BIN=".setup-beam/rebar3"
|
||||
|
||||
$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"
|
||||
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
|
||||
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
|
||||
|
||||
@@ -9,9 +9,15 @@ FILE_INPUT=rebar3
|
||||
FILE_OUTPUT=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"
|
||||
chmod +x "${FILE_OUTPUT}"
|
||||
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
|
||||
|
||||
+34
-22
@@ -15,25 +15,29 @@ async function main() {
|
||||
|
||||
const osVersion = getRunnerOSVersion()
|
||||
const otpSpec = core.getInput('otp-version', { required: true })
|
||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||
|
||||
const elixirSpec = core.getInput('elixir-version', { required: false })
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||
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 gleamSpec = core.getInput('gleam-version', { required: false })
|
||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||
|
||||
if (otpSpec !== 'false') {
|
||||
const otpVersion = await installOTP(otpSpec, osVersion)
|
||||
const elixirInstalled = await maybeInstallElixir(elixirSpec, otpVersion)
|
||||
|
||||
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')
|
||||
}
|
||||
} 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)
|
||||
|
||||
const rebar3Spec = core.getInput('rebar3-version', { required: false })
|
||||
await maybeInstallRebar3(rebar3Spec)
|
||||
}
|
||||
|
||||
@@ -66,10 +70,15 @@ async function maybeInstallElixir(elixirSpec, otpVersion) {
|
||||
console.log(`##[group]Installing Elixir ${elixirVersion}`)
|
||||
await installer.installElixir(elixirVersion)
|
||||
core.setOutput('elixir-version', elixirVersion)
|
||||
const matchersPath = path.join(__dirname, '..', '.github')
|
||||
console.log(
|
||||
`##[add-matcher]${path.join(matchersPath, 'elixir-matchers.json')}`,
|
||||
)
|
||||
const disableProblemMatchers = core.getInput('disable_problem_matchers', {
|
||||
required: false,
|
||||
})
|
||||
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`)
|
||||
console.log('##[endgroup]')
|
||||
|
||||
@@ -108,9 +117,14 @@ async function maybeInstallGleam(gleamSpec) {
|
||||
|
||||
async function maybeInstallRebar3(rebar3Spec) {
|
||||
let installed = false
|
||||
let rebar3Version
|
||||
|
||||
if (rebar3Spec) {
|
||||
const rebar3Version = await getRebar3Version(rebar3Spec)
|
||||
if (rebar3Spec === 'nightly') {
|
||||
rebar3Version = 'nightly'
|
||||
} else {
|
||||
rebar3Version = await getRebar3Version(rebar3Spec)
|
||||
}
|
||||
console.log(`##[group]Installing rebar3 ${rebar3Version}`)
|
||||
await installer.installRebar3(rebar3Version)
|
||||
core.setOutput('rebar3-version', rebar3Version)
|
||||
@@ -388,10 +402,8 @@ function sortVersions(left, right) {
|
||||
|
||||
function getRunnerOSVersion() {
|
||||
const ImageOSToContainer = {
|
||||
ubuntu16: 'ubuntu-16.04',
|
||||
ubuntu18: 'ubuntu-18.04',
|
||||
ubuntu20: 'ubuntu-20.04',
|
||||
win16: 'windows-2016',
|
||||
win19: 'windows-2019',
|
||||
}
|
||||
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