Add Gleam (#67)

This commit is contained in:
Paulo F. Oliveira authored and GitHub committed 2021-08-03 18:56:12 +01:00
1 parent 4fbbcf2e6c
commit c988d89031
39 files changed
+442 -64

No files matched your search

+18 -4
View File
@@ -14,6 +14,7 @@ jobs:
name: >
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
Gleam ${{matrix.combo.gleam-version}},
rebar3 ${{matrix.combo.rebar3-version}}
runs-on: ${{matrix.combo.os}}
strategy:
@@ -106,6 +107,10 @@ jobs:
- elixir-version: 'master'
otp-version: '23.1'
os: 'ubuntu-20.04'
- gleam-version: '0.16'
otp-version: '24'
rebar3-version: '3.16'
os: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
- name: Use erlef/setup-beam
@@ -114,6 +119,7 @@ jobs:
with:
otp-version: ${{matrix.combo.otp-version}}
elixir-version: ${{matrix.combo.elixir-version}}
gleam-version: ${{matrix.combo.gleam-version}}
rebar3-version: ${{matrix.combo.rebar3-version}}
version-type: ${{matrix.combo.version-type}}
- name: Erlang/OTP version (action)
@@ -121,6 +127,9 @@ jobs:
- name: Elixir version (action)
run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}"
if: ${{matrix.combo.elixir-version}}
- name: Gleam version (action)
run: echo "Gleam ${{steps.setup-beam.outputs.gleam-version}}"
if: ${{matrix.combo.gleam-version}}
- name: rebar3 version (action)
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
if: ${{matrix.combo.rebar3-version}}
@@ -130,14 +139,19 @@ jobs:
mix help local.rebar
mix help local.hex
if: ${{matrix.combo.elixir-version}}
- name: Run Mix project tests
- name: Run Elixir/Mix project tests
run: |
cd test-projects/mix
cd test-projects/elixir_mix
mix deps.get
mix test
if: ${{matrix.combo.elixir-version}}
- name: Run rebar3 project tests
- name: Run Erlang/rebar3 project tests
run: |
cd test-projects/rebar3
cd test-projects/erlang_rebar3
rebar3 ct
if: ${{matrix.combo.rebar3-version}}
- name: Run Gleam/rebar3 project tests
run: |
cd test-projects/gleam_rebar3
rebar3 eunit
if: ${{matrix.combo.gleam-version}}
+18 -4
View File
@@ -14,6 +14,7 @@ jobs:
name: >
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
Gleam ${{matrix.combo.gleam-version}},
rebar3 ${{matrix.combo.rebar3-version}}
runs-on: ${{matrix.combo.os}}
strategy:
@@ -52,6 +53,10 @@ jobs:
otp-version: '24'
rebar3-version: '3.15'
os: 'windows-latest'
- gleam-version: '0.16'
otp-version: '24'
rebar3-version: '3.16'
os: 'windows-latest'
steps:
- uses: actions/checkout@v2
- name: Use erlef/setup-beam
@@ -60,12 +65,16 @@ jobs:
with:
otp-version: ${{matrix.combo.otp-version}}
elixir-version: ${{matrix.combo.elixir-version}}
gleam-version: ${{matrix.combo.gleam-version}}
rebar3-version: ${{matrix.combo.rebar3-version}}
- name: Erlang/OTP version (action)
run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}"
- name: Elixir version (action)
run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}"
if: ${{matrix.combo.elixir-version}}
- name: Gleam version (action)
run: echo "Gleam ${{steps.setup-beam.outputs.gleam-version}}"
if: ${{matrix.combo.gleam-version}}
- name: rebar3 version (action)
run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}"
- name: mix version and help (CLI)
@@ -74,14 +83,19 @@ jobs:
mix help local.rebar
mix help local.hex
if: ${{matrix.combo.elixir-version}}
- name: Run Mix project tests
- name: Run Elixir/Mix project tests
run: |
cd test-projects/mix
cd test-projects/elixir_mix
mix deps.get
mix test
if: ${{matrix.combo.elixir-version}}
- name: Run rebar3 project tests
- name: Run Erlang/rebar3 project tests
run: |
cd test-projects/rebar3
cd test-projects/erlang_rebar3
rebar3 ct
if: ${{matrix.combo.rebar3-version}}
- name: Run Gleam/rebar3 project tests
run: |
cd test-projects/gleam_rebar3
rebar3 eunit
if: ${{matrix.combo.gleam-version}}
+1 -1
View File
@@ -1810,7 +1810,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
-----
The following software may be included in this product: has-bigints, unbox-primitive, which-boxed-primitive. A copy of the source code may be downloaded from git+https://github.com/ljharb/has-bigints.git (has-bigints), git+https://github.com/ljharb/unbox-primitive.git (unbox-primitive), git+https://github.com/inspect-js/which-boxed-primitive.git (which-boxed-primitive). This software contains the following license and notice below:
The following software may be included in this product: has-bigints, internal-slot, side-channel, unbox-primitive, which-boxed-primitive. A copy of the source code may be downloaded from git+https://github.com/ljharb/has-bigints.git (has-bigints), git+https://github.com/ljharb/internal-slot.git (internal-slot), git+https://github.com/ljharb/side-channel.git (side-channel), git+https://github.com/ljharb/unbox-primitive.git (unbox-primitive), git+https://github.com/inspect-js/which-boxed-primitive.git (which-boxed-primitive). This software contains the following license and notice below:
MIT License
+26 -43
View File
@@ -13,6 +13,7 @@ workflow by:
- installing Erlang/OTP
- optionally, installing Elixir
- optionally, installing Gleam
- optionally, installing `rebar3`
- optionally, installing `hex`
@@ -24,13 +25,13 @@ See [action.yml](action.yml) for the action's specification.
**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 Erlang/OTP, Elixir versions, and
`rebar3` versions, and setting option `version-type` to `strict`.
For best results, we recommend specifying exact
versions, and setting option `version-type` to `strict`.
However, values like `22.x`, or even `>22`, are also accepted, and we attempt to resolve them
according to semantic versioning rules. This implicitly means `version-type` is `loose`,
which is also the default value for this option.
Additionally, it is recommended that one specifies Erlang/OTP, Elixir and `rebar3` versions
Additionally, it is recommended that one specifies versions
using YAML strings, as these examples do, so that numbers like `23.0` don't
end up being parsed as `23`, which is not equivalent.
@@ -82,44 +83,7 @@ jobs:
...
```
### Basic example (Erlang/OTP + Elixir, on Ubuntu)
```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: '22.2'
elixir-version: '1.9.4'
- run: mix deps.get
- run: mix test
```
### Basic example (Erlang/OTP + `rebar3`, on Ubuntu)
```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: '22.2'
rebar3-version: '3.14.2'
- run: rebar3 ct
```
### Matrix example (Erlang/OTP + Elixir, on Ubuntu)
### Example (Erlang/OTP + Elixir, on Ubuntu)
```yaml
# create this in .github/workflows/ci.yml
@@ -143,7 +107,7 @@ jobs:
- run: mix test
```
### Matrix example (Erlang/OTP + `rebar3`, on Ubuntu)
### Example (Erlang/OTP + `rebar3`, on Ubuntu)
```yaml
# create this in .github/workflows/ci.yml
@@ -166,7 +130,7 @@ jobs:
- run: rebar3 ct
```
### Basic example (Erlang/OTP + `rebar3`, on Windows)
### Example (Erlang/OTP + `rebar3`, on Windows)
```yaml
# create this in .github/workflows/ci.yml
@@ -184,6 +148,25 @@ jobs:
- run: rebar3 ct
```
### Example (Gleam + `rebar3`, on Ubuntu)
```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: '24'
gleam-version: '0.16'
rebar3-version: '3.16'
- run: rebar3 ct
```
## 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.
+43
View File
@@ -11,10 +11,12 @@ const installer = require('../src/installer')
async function all() {
await testFailInstallOTP()
await testFailInstallElixir()
await testFailInstallGleam()
await testFailInstallRebar3()
await testOTPVersions()
await testElixirVersions()
await testGleamVersions()
await testRebar3Versions()
await testGetVersionFromSpec()
@@ -63,6 +65,20 @@ async function testFailInstallElixir() {
)
}
async function testFailInstallGleam() {
const gleamVersion = '0.1.3'
assert.rejects(
async () => {
await installer.installGleam(gleamVersion)
},
(err) => {
assert.ok(err instanceof Error)
return true
},
`Installing Gleam ${gleamVersion} is supposed to fail`,
)
}
async function testFailInstallRebar3() {
const r3Version = '0.14.4'
assert.rejects(
@@ -197,6 +213,33 @@ async function testElixirVersions() {
simulateInput('version-type', 'loose')
}
async function testGleamVersions() {
let got
let expected
let spec
let otpVersion
spec = 'v0.3.0'
otpVersion = 'OTP-23'
expected = 'v0.3.0'
got = await setupBeam.getGleamVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
spec = '0.13.2'
otpVersion = 'OTP-24'
expected = 'v0.13.2'
got = await setupBeam.getGleamVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', 'strict')
spec = 'v0.14.0-rc2'
otpVersion = 'OTP-22'
expected = 'v0.14.0-rc2'
got = await setupBeam.getGleamVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', 'loose')
}
async function testRebar3Versions() {
let got
let expected
+4
View File
@@ -12,6 +12,8 @@ inputs:
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)
default: true
@@ -29,6 +31,8 @@ outputs:
description: Exact version of Elixir that was installed
otp-version:
description: Exact version of Erlang/OTP that was installed
gleam-version:
description: Exact version of Gleam that was installed
rebar3-version:
description: Exact version of rebar3 that was installed
runs:
+75 -5
View File
@@ -4618,6 +4618,21 @@ async function installElixir(elixirVersion) {
}
}
/**
* Install Gleam.
*
* @param {string} gleamVersion
*/
async function installGleam(gleamVersion) {
const OS = process.platform
if (OS === 'linux') {
await exec(__nccwpck_require__.ab + "install-gleam.sh", [gleamVersion])
} else if (OS === 'win32') {
const script = __nccwpck_require__.ab + "install-gleam.ps1"
await exec(`pwsh.exe ${script} -VSN:${gleamVersion}`)
}
}
/**
* Install rebar3.
*
@@ -4644,6 +4659,7 @@ function checkPlatform() {
module.exports = {
installOTP,
installElixir,
installGleam,
installRebar3,
checkPlatform,
}
@@ -4686,6 +4702,9 @@ async function main() {
await mix(shouldMixHex, 'hex')
}
const gleamSpec = core.getInput('gleam-version', { required: false })
await maybeInstallGleam(gleamSpec)
const rebar3Spec = core.getInput('rebar3-version', { required: false })
await maybeInstallRebar3(rebar3Spec)
}
@@ -4742,6 +4761,23 @@ async function mix(shouldMix, what) {
}
}
async function maybeInstallGleam(gleamSpec) {
let installed = false
if (gleamSpec) {
const gleamVersion = await getGleamVersion(gleamSpec)
console.log(`##[group]Installing Gleam ${gleamVersion}`)
await installer.installGleam(gleamVersion)
core.setOutput('gleam-version', gleamVersion)
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
console.log('##[endgroup]')
installed = true
}
return installed
}
async function maybeInstallRebar3(rebar3Spec) {
let installed = false
@@ -4830,10 +4866,21 @@ async function getElixirVersion(exSpec0, otpVersion) {
)
}
const DigitStart = new RegExp('^\\d+')
return DigitStart.test(elixirVersion)
? `v${elixirVersionWithOTP}`
: elixirVersionWithOTP
return maybePrependWithV(elixirVersionWithOTP, elixirVersion)
}
async function getGleamVersion(gleamSpec0) {
const gleamSpec = gleamSpec0.match(/^v?(.+)/)
const gleamVersions = await getGleamVersions()
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions)
if (gleamVersion === null) {
throw new Error(
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
"(should you be using option 'version-type': 'strict'?)",
)
}
return maybePrependWithV(gleamVersion, gleamVersion)
}
async function getRebar3Version(r3Spec) {
@@ -4916,6 +4963,21 @@ async function getElixirVersions() {
return otpVersionsForElixirMap
}
async function getGleamVersions() {
const resultJSONs = await get(
'https://api.github.com/repos/gleam-lang/gleam/releases?per_page=100',
[1, 2, 3],
)
const gleamVersionsListing = []
resultJSONs.forEach((resultJSON) => {
JSON.parse(resultJSON)
.map((x) => x.tag_name)
.sort()
.forEach((v) => gleamVersionsListing.push(v))
})
return gleamVersionsListing
}
async function getRebar3Versions() {
const resultJSONs = await get(
'https://api.github.com/repos/erlang/rebar3/releases?per_page=100',
@@ -4959,7 +5021,7 @@ function getVersionFromSpec(spec, versions) {
}
}
return version
return version === null || version === undefined ? null : version
}
function maybeCoerced(v) {
@@ -5066,9 +5128,17 @@ async function get(url0, pageIdxs) {
return ret
}
function maybePrependWithV(versionToPrepend, specVersion) {
const digitStart = new RegExp('^\\d+')
return digitStart.test(specVersion)
? `v${versionToPrepend}`
: versionToPrepend
}
module.exports = {
getOTPVersion,
getElixirVersion,
getGleamVersion,
getRebar3Version,
getVersionFromSpec,
}
+1 -1
View File
@@ -15,5 +15,5 @@ New-Item "$DIR_FOR_BIN" -ItemType Directory | Out-Null
$ProgressPreference="SilentlyContinue"
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
$ProgressPreference="Continue"
Write-Output "Installed Erlang/OTP version follows"
Write-Output "Installed Elixir version follows"
& "$DIR_FOR_BIN/bin/iex" "-v" | Write-Output
+19
View File
@@ -0,0 +1,19 @@
param([Parameter(Mandatory=$true)][string]$VSN)
$ErrorActionPreference="Stop"
Set-Location $Env:RUNNER_TEMP
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
$FILE_OUTPUT="gleam.zip"
$DIR_FOR_BIN=".setup-beam/gleam/bin"
$ProgressPreference="SilentlyContinue"
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "$FILE_OUTPUT"
$ProgressPreference="Continue"
New-Item "$DIR_FOR_BIN" -ItemType Directory | Out-Null
$ProgressPreference="SilentlyContinue"
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
$ProgressPreference="Continue"
Write-Output "Installed Gleam version follows"
& "$DIR_FOR_BIN/gleam" "--version" | Write-Output
Vendored Executable
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
set -eo pipefail
cd "$RUNNER_TEMP"
VSN=${1}
FILE_INPUT=gleam-${VSN}-linux-amd64.tar.gz
FILE_OUTPUT=gleam.tar.gz
DIR_FOR_BIN=.setup-beam/gleam/bin
wget -q -O "${FILE_OUTPUT}" "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}"
mkdir -p "${DIR_FOR_BIN}"
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}"
echo "Installed Gleam version follows"
${DIR_FOR_BIN}/gleam --version
+1 -1
View File
@@ -15,5 +15,5 @@ New-Item "$DIR_FOR_BIN" -ItemType Directory | Out-Null
$ProgressPreference="SilentlyContinue"
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
$ProgressPreference="Continue"
Write-Output "Installed Erlang/OTP version follows"
Write-Output "Installed Elixir version follows"
& "$DIR_FOR_BIN/bin/iex" "-v" | Write-Output
+19
View File
@@ -0,0 +1,19 @@
param([Parameter(Mandatory=$true)][string]$VSN)
$ErrorActionPreference="Stop"
Set-Location $Env:RUNNER_TEMP
$FILE_INPUT="gleam-${VSN}-windows-64bit.zip"
$FILE_OUTPUT="gleam.zip"
$DIR_FOR_BIN=".setup-beam/gleam/bin"
$ProgressPreference="SilentlyContinue"
Invoke-WebRequest "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" -OutFile "$FILE_OUTPUT"
$ProgressPreference="Continue"
New-Item "$DIR_FOR_BIN" -ItemType Directory | Out-Null
$ProgressPreference="SilentlyContinue"
Expand-Archive -DestinationPath "${DIR_FOR_BIN}" -Path "${FILE_OUTPUT}"
$ProgressPreference="Continue"
Write-Output "Installed Gleam version follows"
& "$DIR_FOR_BIN/gleam" "--version" | Write-Output
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
set -eo pipefail
cd "$RUNNER_TEMP"
VSN=${1}
FILE_INPUT=gleam-${VSN}-linux-amd64.tar.gz
FILE_OUTPUT=gleam.tar.gz
DIR_FOR_BIN=.setup-beam/gleam/bin
wget -q -O "${FILE_OUTPUT}" "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}"
mkdir -p "${DIR_FOR_BIN}"
tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}"
echo "Installed Gleam version follows"
${DIR_FOR_BIN}/gleam --version
+16
View File
@@ -32,6 +32,21 @@ async function installElixir(elixirVersion) {
}
}
/**
* Install Gleam.
*
* @param {string} gleamVersion
*/
async function installGleam(gleamVersion) {
const OS = process.platform
if (OS === 'linux') {
await exec(path.join(__dirname, 'install-gleam.sh'), [gleamVersion])
} else if (OS === 'win32') {
const script = path.join(__dirname, 'install-gleam.ps1')
await exec(`pwsh.exe ${script} -VSN:${gleamVersion}`)
}
}
/**
* Install rebar3.
*
@@ -58,6 +73,7 @@ function checkPlatform() {
module.exports = {
installOTP,
installElixir,
installGleam,
installRebar3,
checkPlatform,
}
+59 -5
View File
@@ -30,6 +30,9 @@ async function main() {
await mix(shouldMixHex, 'hex')
}
const gleamSpec = core.getInput('gleam-version', { required: false })
await maybeInstallGleam(gleamSpec)
const rebar3Spec = core.getInput('rebar3-version', { required: false })
await maybeInstallRebar3(rebar3Spec)
}
@@ -86,6 +89,23 @@ async function mix(shouldMix, what) {
}
}
async function maybeInstallGleam(gleamSpec) {
let installed = false
if (gleamSpec) {
const gleamVersion = await getGleamVersion(gleamSpec)
console.log(`##[group]Installing Gleam ${gleamVersion}`)
await installer.installGleam(gleamVersion)
core.setOutput('gleam-version', gleamVersion)
core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
console.log('##[endgroup]')
installed = true
}
return installed
}
async function maybeInstallRebar3(rebar3Spec) {
let installed = false
@@ -174,10 +194,21 @@ async function getElixirVersion(exSpec0, otpVersion) {
)
}
const DigitStart = new RegExp('^\\d+')
return DigitStart.test(elixirVersion)
? `v${elixirVersionWithOTP}`
: elixirVersionWithOTP
return maybePrependWithV(elixirVersionWithOTP, elixirVersion)
}
async function getGleamVersion(gleamSpec0) {
const gleamSpec = gleamSpec0.match(/^v?(.+)/)
const gleamVersions = await getGleamVersions()
const gleamVersion = getVersionFromSpec(gleamSpec[1], gleamVersions)
if (gleamVersion === null) {
throw new Error(
`Requested Gleam version (${gleamSpec0}) not found in version list ` +
"(should you be using option 'version-type': 'strict'?)",
)
}
return maybePrependWithV(gleamVersion, gleamVersion)
}
async function getRebar3Version(r3Spec) {
@@ -260,6 +291,21 @@ async function getElixirVersions() {
return otpVersionsForElixirMap
}
async function getGleamVersions() {
const resultJSONs = await get(
'https://api.github.com/repos/gleam-lang/gleam/releases?per_page=100',
[1, 2, 3],
)
const gleamVersionsListing = []
resultJSONs.forEach((resultJSON) => {
JSON.parse(resultJSON)
.map((x) => x.tag_name)
.sort()
.forEach((v) => gleamVersionsListing.push(v))
})
return gleamVersionsListing
}
async function getRebar3Versions() {
const resultJSONs = await get(
'https://api.github.com/repos/erlang/rebar3/releases?per_page=100',
@@ -303,7 +349,7 @@ function getVersionFromSpec(spec, versions) {
}
}
return version
return version === null || version === undefined ? null : version
}
function maybeCoerced(v) {
@@ -410,9 +456,17 @@ async function get(url0, pageIdxs) {
return ret
}
function maybePrependWithV(versionToPrepend, specVersion) {
const digitStart = new RegExp('^\\d+')
return digitStart.test(specVersion)
? `v${versionToPrepend}`
: versionToPrepend
}
module.exports = {
getOTPVersion,
getElixirVersion,
getGleamVersion,
getRebar3Version,
getVersionFromSpec,
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+23
View File
@@ -0,0 +1,23 @@
name: test
on:
push:
branches:
- master
- main
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.0.0
- uses: gleam-lang/setup-erlang@v1.1.2
with:
otp-version: 23.2
- uses: gleam-lang/setup-gleam@v1.0.2
with:
gleam-version: 0.16.1
- run: rebar3 install_deps
- run: rebar3 eunit
- run: gleam format --check src test
+21
View File
@@ -0,0 +1,21 @@
*.beam
*.iml
*.o
*.plt
*.swo
*.swp
*~
.erlang.cookie
.eunit
.idea
.rebar
.rebar3
_*
_build
docs
ebin
erl_crash.dump
gen
log
logs
rebar3.crashdump
+24
View File
@@ -0,0 +1,24 @@
# gleam_rebar3
A Gleam project
## Quick start
```sh
# Run the eunit tests
rebar3 eunit
# Run the Erlang REPL
rebar3 shell
```
## Installation
If [available in Hex](https://rebar3.org/docs/configuration/dependencies/#declaring-dependencies)
this package can be installed by adding `gleam_rebar3` to your `rebar.config` dependencies:
```erlang
{deps, [
gleam_rebar3
]}.
```
+3
View File
@@ -0,0 +1,3 @@
name = "gleam_rebar3"
# repository = { type = "github", user = "my-user", repo = "gleam_rebar3" }
+12
View File
@@ -0,0 +1,12 @@
{erl_opts, [debug_info]}.
{src_dirs, ["src", "gen/src"]}.
{profiles, [
{test, [{src_dirs, ["src", "test", "gen/src", "gen/test"]}]}
]}.
{project_plugins, [rebar_gleam]}.
{deps, [
{gleam_stdlib, "0.16.0"}
]}.
@@ -0,0 +1,15 @@
{application, gleam_rebar3,
[{description, "A Gleam project"},
{vsn, "0.1.0"},
{registered, []},
{applications,
[kernel,
stdlib,
gleam_stdlib
]},
{env,[]},
{modules, []},
{include_files, ["gleam.toml", "gen"]},
{links, []}
]}.
@@ -0,0 +1,3 @@
pub fn hello_world() -> String {
"Hello, from gleam_rebar3!"
}
@@ -0,0 +1,7 @@
import gleam_rebar3
import gleam/should
pub fn hello_world_test() {
gleam_rebar3.hello_world()
|> should.equal("Hello, from gleam_rebar3!")
}