Compare commits

...

36 Commits

Author SHA1 Message Date
GitHub Actions 9d5b75ddfd Automation: update setup-beam version output to 98c13a9 2026-03-09 22:41:35 +00:00
Dino Kovač 98c13a9ed3 Support mise.toml (#415)
* add support for mise.toml version file type

* changes from review

* Keep versioning consistent

* fix default value for version-file-type input

* Use single `version-file`, autodetect type

* Update src/setup-beam.js

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>

* Improve log output for mise version files

* Rebuild dist

* Run build-dist

* add support for mise.toml version file type

* changes from review

* Keep versioning consistent

* fix default value for version-file-type input

* Use single `version-file`, autodetect type

* Update src/setup-beam.js

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>

* Improve log output for mise version files

* Rebuild dist

* Run build-dist

---------

Co-authored-by: Michael Ruoss <michael.ruoss@cradle.bio>
Co-authored-by: Michael Ruoss <michael@michaelruoss.ch>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:41:15 +00:00
GitHub Actions 0f13bcf18a Automation: update setup-beam version output to c3137f5 2026-03-09 22:19:29 +00:00
dependabot[bot] c3137f5cd5 Bump globals from 17.3.0 to 17.4.0 (#421)
* Bump globals from 17.3.0 to 17.4.0

Bumps [globals](https://github.com/sindresorhus/globals) from 17.3.0 to 17.4.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.3.0...v17.4.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Prevent Cannot access 'isStrictVersion' before initialization

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:19:11 +00:00
GitHub Actions 4cbacdb2a9 Automation: update setup-beam version output to 687000a 2026-03-09 22:10:23 +00:00
dependabot[bot] 687000ab96 Bump @actions/core from 1.11.1 to 3.0.0 (#419)
* Bump @actions/core from 1.11.1 to 3.0.0

Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.11.1 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* npm run build-dist

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:09:48 +00:00
dependabot[bot] 9ba6605098 Bump eslint-plugin-yml from 1.18.0 to 3.3.1 (#418)
* Bump eslint-plugin-yml from 1.18.0 to 3.3.1

Bumps [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) from 1.18.0 to 3.3.1.
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v1.18.0...v3.3.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-yml
  dependency-version: 3.3.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:09:38 +00:00
GitHub Actions 722d91de6e Automation: update setup-beam version output to f79887d 2026-03-09 17:46:19 +00:00
dependabot[bot] f79887d1ba Bump eslint from 10.0.1 to 10.0.3 (#420)
Bumps [eslint](https://github.com/eslint/eslint) from 10.0.1 to 10.0.3.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.1...v10.0.3)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:44:31 +00:00
dependabot[bot] 30a0896082 Bump markdownlint-cli from 0.47.0 to 0.48.0 (#422)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.48.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:44:08 +00:00
dependabot[bot] 41c0004487 Bump actions/setup-node from 6.2.0 to 6.3.0 (#423)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:43:59 +00:00
dependabot[bot] 9fc15d548d Bump raven-actions/actionlint from 2.1.1 to 2.1.2 (#424)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 17:43:51 +00:00
GitHub Actions 19003af5f4 Automation: update setup-beam version output to 53a564f 2026-03-07 14:40:30 +00:00
github-actions[bot] 53a564f4bb Update 3rd party licenses (automation) (#417)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-07 14:40:09 +00:00
GitHub Actions 6ee130ce6b Automation: update setup-beam version output to 11a1f27 2026-03-06 20:46:44 +00:00
github-actions[bot] 11a1f27b1e Update 3rd party licenses (automation) (#416)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-06 20:46:21 +00:00
GitHub Actions 83bf0e8bac Automation: update setup-beam version output to 47d6c3c 2026-03-03 17:18:10 +00:00
github-actions[bot] 47d6c3c4af Update 3rd party licenses (automation) (#414)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-03 11:17:49 -06:00
GitHub Actions 0d2a6cb44d Automation: update setup-beam version output to 0f6ba5d 2026-03-03 04:07:24 +00:00
dependabot[bot] 0f6ba5d884 Bump @actions/tool-cache from 2.0.2 to 4.0.0 (#407)
* Bump @actions/tool-cache from 2.0.2 to 4.0.0

Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 2.0.2 to 4.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-03 04:07:06 +00:00
GitHub Actions 58166ce788 Automation: update setup-beam version output to 4a07ed8 2026-03-03 03:58:51 +00:00
dependabot[bot] 4a07ed84ac Bump @actions/exec from 1.1.1 to 3.0.0 (#405)
* Bump @actions/exec from 1.1.1 to 3.0.0

Bumps [@actions/exec](https://github.com/actions/toolkit/tree/HEAD/packages/exec) from 1.1.1 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/exec/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/exec)

---
updated-dependencies:
- dependency-name: "@actions/exec"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Modernize JS somewhat

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-03 03:58:30 +00:00
GitHub Actions de78da9a9d Automation: update setup-beam version output to 9928a16 2026-03-02 23:18:44 +00:00
github-actions[bot] 9928a16c11 Update 3rd party licenses (automation) (#413)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-02 23:18:00 +00:00
GitHub Actions 3964390c66 Automation: update setup-beam version output to 1dacaf8 2026-03-02 23:14:32 +00:00
Paulo F. Oliveira 1dacaf8a01 Fix for license update automation (#412) 2026-03-02 23:14:13 +00:00
GitHub Actions fa8ba5f70e Automation: update setup-beam version output to daf8797 2026-03-02 22:09:05 +00:00
Paulo F. Oliveira daf8797d04 Update 3rd party licenses (#411)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-02 22:08:40 +00:00
GitHub Actions de72677f00 Automation: update setup-beam version output to 334f76c 2026-03-02 21:59:55 +00:00
dependabot[bot] 334f76ce04 Bump semver from 7.7.2 to 7.7.4 (#406)
* Bump semver from 7.7.2 to 7.7.4

Bumps [semver](https://github.com/npm/node-semver) from 7.7.2 to 7.7.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.2...v7.7.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-02 21:59:33 +00:00
GitHub Actions 86b5ecbf21 Automation: update setup-beam version output to b8fc6e4 2026-03-02 21:34:07 +00:00
dependabot[bot] b8fc6e435e Bump @eslint/js from 9.38.0 to 10.0.1 (#404)
* Bump @eslint/js from 9.38.0 to 10.0.1

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.38.0 to 10.0.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-02 21:33:26 +00:00
GitHub Actions e7fda7af4e Automation: update setup-beam version output to a50e3e2 2026-03-02 21:22:09 +00:00
dependabot[bot] a50e3e2f89 Bump prettier from 3.6.2 to 3.8.1 (#408)
Bumps [prettier](https://github.com/prettier/prettier) from 3.6.2 to 3.8.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.6.2...3.8.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 21:21:18 +00:00
dependabot[bot] 7bc1e4ca67 Bump actions/setup-node from 6.1.0 to 6.2.0 (#409)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 21:21:10 +00:00
dependabot[bot] baf2bc3313 Bump raven-actions/actionlint from 2.1.0 to 2.1.1 (#410)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 21:21:02 +00:00
12 changed files with 39062 additions and 14770 deletions
+11 -5
View File
@@ -46,7 +46,7 @@ jobs:
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-node@v6.1.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
- run: npm run build-dist
@@ -59,18 +59,20 @@ jobs:
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v6.0.2
- uses: raven-actions/actionlint@v2.1.0
- uses: raven-actions/actionlint@v2.1.2
unit_tests_ubuntu:
name: Unit tests (Ubuntu)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-node@v6.1.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
- run: npm ci
- run: npm test
env:
NODE_ENV: test
- name: .tool-versions test
id: setup-beam
uses: ./
@@ -85,11 +87,13 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-node@v6.1.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
- run: npm install --production
- run: npm test
env:
NODE_ENV: test
- name: .tool-versions test
id: setup-beam
uses: ./
@@ -104,8 +108,10 @@ jobs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-node@v6.1.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
- run: npm ci
- run: npm test
env:
NODE_ENV: test
@@ -3,6 +3,7 @@ name: Update 3rd party licenses (automation)
permissions:
contents: write
pull-requests: write
on:
schedule:
+4 -2
View File
@@ -1,2 +1,4 @@
node_modules/**
test/.tool-versions
/node_modules
/test/.tool-versions
/test/mise.toml
/dist/package.json
+1192 -6936
View File
File diff suppressed because it is too large Load Diff
+7 -8
View File
@@ -141,23 +141,22 @@ e.g. `${{steps.setup-beam.outputs.erlang-version}}`
### Version file
A version file is specified via input `version-file` (e.g.`.tool-versions`). This
allows not having to use YML input for versions, though the action does check (and
A version file is specified via input `version-file` (e.g. `.tool-versions` or `mise.toml`).
The file type is inferred from the filename: files ending in `.toml` are parsed as
[mise](https://mise.jdx.dev/configuration.html#tools-dev-tools) configuration, and all others
are parsed as [`.tool-versions`](https://asdf-vm.com/manage/configuration.html) (asdf format).
This allows not having to use YML input for versions, though the action does check (and
will exit with error) if both inputs are set.
**Note**: if you're using a version file, option `version-type` is checked to be `strict`,
and will make the action exit with error otherwise.
The following version file formats are supported:
- `.tool-versions`, as specified by [asdf: Configuration](https://asdf-vm.com/manage/configuration.html)
Supported version elements are the same as the ones defined for the YML portion of the action,
with the following correspondence.
#### `.tool-versions` format
#### `.tool-versions` / `mise.toml` format
| YML | `.tool-versions`
| YML | Version file key
|- |-
| `otp-version` | `erlang`
| `elixir-version` | `elixir`
+3 -1
View File
@@ -69,7 +69,9 @@ inputs:
required: false
version-file:
description: a versions file (e.g. as used by `asdf`), which defines inputs
description: >-
a versions file (e.g. `.tool-versions` as used by `asdf`, or `mise.toml`
as used by `mise`), which defines inputs
default: ''
required: false
+36675 -7027
View File
File diff suppressed because one or more lines are too long
+19 -22
View File
@@ -1,30 +1,27 @@
import js from '@eslint/js'
import globals from 'globals'
import { defineConfig } from 'eslint/config'
import eslintPluginYml from 'eslint-plugin-yml'
import yml from 'eslint-plugin-yml'
import * as yamlParser from 'yaml-eslint-parser'
export default defineConfig([
...eslintPluginYml.configs['flat/recommended'],
export default [
js.configs.recommended,
{
extends: ['js/recommended'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: globals.node,
},
},
{
files: ['**/*.yml'],
languageOptions: {
parser: yamlParser,
},
plugins: {
js,
yml,
},
languageOptions: {
ecmaVersion: 2022,
globals: {
...globals.node,
},
rules: {
...yml.configs.recommended.rules,
},
},
{
extends: eslintPluginYml.configs['flat/recommended'],
files: ['*.yml'],
languageOptions: {
parserOptions: {
parser: 'yaml-eslint-parser',
defaultYAMLVersion: '1.2',
},
},
},
])
]
+1014 -714
View File
File diff suppressed because it is too large Load Diff
+12 -10
View File
@@ -1,5 +1,6 @@
{
"name": "setup-beam",
"type": "module",
"license": "MIT",
"private": true,
"scripts": {
@@ -16,21 +17,22 @@
"build-dist": "npm run clean-dist && npm install && npm run build && npm run format && npm run lint"
},
"dependencies": {
"@actions/core": "1.11.1",
"@actions/exec": "1.1.1",
"@actions/tool-cache": "2.0.2",
"@actions/core": "3.0.0",
"@actions/exec": "3.0.0",
"@actions/tool-cache": "4.0.0",
"csv-parse": "6.1.0",
"lodash": "4.17.23",
"semver": "7.7.2"
"semver": "7.7.4",
"toml": "3.0.0"
},
"devDependencies": {
"@eslint/js": "9.38.0",
"@eslint/js": "10.0.1",
"@vercel/ncc": "0.38.4",
"eslint": "9.38.0",
"eslint-plugin-yml": "1.18.0",
"globals": "17.3.0",
"markdownlint-cli": "0.47.0",
"prettier": "3.6.2",
"eslint": "10.0.3",
"eslint-plugin-yml": "3.3.1",
"globals": "17.4.0",
"markdownlint-cli": "0.48.0",
"prettier": "3.8.1",
"shellcheck": "4.1.0",
"yarn": "1.22.22"
},
+64 -35
View File
@@ -1,14 +1,19 @@
const core = require('@actions/core')
const { exec } = require('@actions/exec')
const tc = require('@actions/tool-cache')
const path = require('path')
const semver = require('semver')
const fs = require('fs')
const os = require('os')
const csv = require('csv-parse/sync')
const _ = require('lodash')
import path from 'node:path'
import fs from 'node:fs'
import os from 'node:os'
import { fileURLToPath } from 'node:url'
import * as core from '@actions/core'
import { exec } from '@actions/exec'
import * as tc from '@actions/tool-cache'
import * as semver from 'semver'
import * as csv from 'csv-parse/sync'
import _ from 'lodash'
import toml from 'toml'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const MAX_HTTP_RETRIES = 3
const APPS = ['erlang', 'elixir', 'gleam', 'rebar']
if (process.env.NODE_ENV !== 'test') {
main().catch((err) => {
@@ -53,7 +58,7 @@ async function main() {
await maybeInstallRebar3(rebar3Spec)
// undefined is replaced by a function, post- main branch merge
const setupBeamVersion = 'fe5485f'
const setupBeamVersion = '98c13a9'
core.setOutput('setup-beam-version', setupBeamVersion)
}
@@ -108,11 +113,9 @@ async function maybeInstallElixir(elixirSpec) {
function maybeEnableElixirProblemMatchers() {
const disableProblemMatchers = getInput('disable_problem_matchers', false)
if (disableProblemMatchers === 'false') {
// path.join helps ncc figure this out
const elixirMatchers = path.join(
__dirname,
'..',
'matchers',
'elixir-matchers.json',
`${__dirname}/../matchers/elixir-matchers.json`,
)
core.info(`##[add-matcher]${elixirMatchers}`)
}
@@ -191,17 +194,17 @@ async function getOTPVersion(otpSpec0, osVersion) {
}
function requestedVersionFor(tool, version, originListing, mirrors) {
const isStrictVersion = isStrictVersion()
const isVersionTypeStrict = isStrictVersion()
let versionType = 'loose'
if (isStrictVersion) {
if (isVersionTypeStrict) {
versionType = 'strict'
}
let ret =
`Requested ${versionType} ${tool} version (${version}) not found in version list, ` +
`at ${originListing}${mirrors ? `, with mirrors ${mirrors}` : ''}.`
if (!isStrictVersion) {
if (!isVersionTypeStrict) {
ret = `${ret} Should you be using option 'version-type': 'strict'?`
}
@@ -576,7 +579,7 @@ function getVersionFromSpec(spec0, versions0) {
}
function maybeCoerced(v) {
let ret = null
let ret
try {
if (!isRC(v)) {
ret = semver.coerce(v).version
@@ -801,28 +804,14 @@ alongside ${alternativeName}=${alternativeValue} \
return input
}
function parseVersionFile(versionFilePath0) {
const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE,
versionFilePath0,
)
if (!fs.existsSync(versionFilePath)) {
throw new Error(
`The specified version file, ${versionFilePath0}, does not exist`,
)
}
core.startGroup(`Parsing version file at ${versionFilePath0}`)
function parseToolVersionsFile(versionFilePath) {
const appVersions = new Map()
const versions = fs.readFileSync(versionFilePath, 'utf8')
// For the time being we parse .tool-versions
// If we ever start parsing something else, this should
// become default in a new option named e.g. version-file-type
versions.split(/\r?\n/).forEach((line) => {
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
if (appVersion) {
const app = appVersion[1]
if (['erlang', 'elixir', 'gleam', 'rebar'].includes(app)) {
if (APPS.includes(app)) {
const [, , , version] = appVersion
core.info(`Consuming ${app} at version ${version}`)
appVersions.set(app, version)
@@ -839,6 +828,46 @@ function parseVersionFile(versionFilePath0) {
return appVersions
}
function parseMiseTomlFile(versionFilePath) {
const appVersions = new Map()
const miseToml = fs.readFileSync(versionFilePath, 'utf8')
const miseTomlParsed = toml.parse(miseToml)
for (const app in miseTomlParsed.tools) {
if (APPS.includes(app)) {
const appVersion = miseTomlParsed.tools[app]
const version =
typeof appVersion == 'object' ? appVersion.version : appVersion
core.info(`Consuming ${app} at version ${version}`)
appVersions.set(app, version)
}
}
return appVersions
}
function parseVersionFile(versionFilePath0) {
const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE,
versionFilePath0,
)
if (!fs.existsSync(versionFilePath)) {
throw new Error(
`The specified version file, ${versionFilePath0}, does not exist`,
)
}
if (versionFilePath0.endsWith('.toml')) {
core.startGroup(
`Parsing ${path.basename(versionFilePath0)} file at ${versionFilePath0}`,
)
return parseMiseTomlFile(versionFilePath)
}
core.startGroup(`Parsing .tool-versions file at ${versionFilePath0}`)
return parseToolVersionsFile(versionFilePath)
}
function debugLog(groupName, message) {
const group = `Debugging for ${groupName}`
core.debug(
@@ -1237,7 +1266,7 @@ function debugLoggingEnabled() {
return !!process.env.RUNNER_DEBUG
}
module.exports = {
export default {
get,
getElixirVersion,
getGleamVersion,
+60 -10
View File
@@ -9,15 +9,16 @@ simulateInput('install-hex', 'true')
simulateInput('github-token', process.env.GITHUB_TOKEN)
simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
const assert = require('assert')
const http = require('http')
const fs = require('fs')
const os = require('os')
const path = require('path')
const setupBeam = require('../src/setup-beam')
const { problemMatcher } = require('../matchers/elixir-matchers.json')
const { describe, it } = require('node:test')
const csv = require('csv-parse/sync')
import assert from 'node:assert'
import http from 'node:http'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import { describe, it } from 'node:test'
import * as csv from 'csv-parse/sync'
import setupBeam from '../src/setup-beam.js'
import elixirMatchers from '../matchers/elixir-matchers.json' with { type: 'json' }
const { problemMatcher } = elixirMatchers
const matrix = {
otp: {
@@ -968,7 +969,7 @@ describe('.getVersionFromSpec(_)', () => {
})
})
describe('version file', () => {
describe('.tool-versions file', () => {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const gleamVersion = unsimulateInput('gleam-version')
@@ -1017,6 +1018,55 @@ gleam ${gleam} \n`
simulateInput('gleam-version', gleamVersion)
})
describe('mise.toml file', () => {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const gleamVersion = unsimulateInput('gleam-version')
it('is parsed correctly', async () => {
const erlang = '27.3.4.1'
const elixir = '1.18.4'
const gleam = '1.9.1'
let miseToml = `[tools]
"erlang" = "${erlang}"
elixir = { version = "${elixir}", postinstall="mix deps.get" } # comment, with space and ref:
"not-gleam" = 0.23 # not picked up
"gleam" = "${gleam}" \n`
const filename = 'test/mise.toml'
if (process.platform === 'win32') {
// Force \r\n to test in Windows
miseToml = miseToml.replace(/\n/g, '\r\n')
}
fs.writeFileSync(filename, miseToml)
process.env.GITHUB_WORKSPACE = ''
const appVersions = setupBeam.parseVersionFile(filename)
assert.strictEqual(appVersions.get('erlang'), erlang)
assert.strictEqual(appVersions.get('elixir'), elixir)
const absoluteFilename = path.join(os.tmpdir(), 'mise.toml')
fs.writeFileSync(absoluteFilename, miseToml)
process.env.GITHUB_WORKSPACE = process.cwd()
const absoluteAppVersions = setupBeam.parseVersionFile(absoluteFilename)
assert.strictEqual(absoluteAppVersions.get('erlang'), erlang)
assert.strictEqual(absoluteAppVersions.get('elixir'), elixir)
assert.ok(async () => {
await setupBeam.install('otp', { toolVersion: erlang })
})
assert.ok(async () => {
await setupBeam.install('elixir', { toolVersion: elixir })
})
assert.ok(async () => {
await setupBeam.install('gleam', { toolVersion: gleam })
})
})
simulateInput('otp-version', otpVersion)
simulateInput('elixir-version', elixirVersion)
simulateInput('gleam-version', gleamVersion)
})
describe('.get(_)', () => {
it('retries as expected', async () => {
let attempt = 0