229 Commits

Author SHA1 Message Date
Paulo F. Oliveira b60baf4753 Add known branch exceptions to version matching (#242) v1.17.1 2024-01-17 23:37:13 +00:00
GitHub Actions 213ca2eceb Automation: update setup-beam version output to bc84950 2024-01-17 23:33:13 +00:00
Paulo F. Oliveira bc84950393 Bump semver to 7.5.4 (#240) 2024-01-17 23:32:48 +00:00
GitHub Actions 980f47ea52 Update setup-beam version output to 4678b57 2024-01-12 19:46:30 +00:00
Paulo F. Oliveira 4678b57fab Have the action output a versioning element so it could be used as part of the cache restore key (#239)
* Do a bit of YAMLlint'ing

* Ease consumer cache invalidation

By providing an output with the action version we ease
cache invalidation on consumer, due to the fact we can
now stop worrying about changes to the action's cache itself

Might also be interesting for self-hosted runners...

* Remove duplicates

* Do further validations for robustness
2024-01-12 13:46:16 -06:00
Paulo F. Oliveira a34c98fd51 Fix typos in security policy (#237) v1.17.0 2024-01-06 14:37:38 -06:00
github-actions[bot] a1c4bb2505 Update 3rd party licenses (#235)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-10-21 11:19:51 -05:00
github-actions[bot] 508b7402b1 Update 3rd party licenses (#234)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-10-13 21:09:00 +01:00
github-actions[bot] 4f96fbfbc0 Update 3rd party licenses (#233)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-10-08 20:28:27 +01:00
github-actions[bot] 5462be1110 Update 3rd party licenses (#232)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-09-14 21:29:33 +01:00
github-actions[bot] 673a8fbd6e Update 3rd party licenses (#230)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-08-26 13:17:31 +01:00
Paulo F. Oliveira 2a21db5504 Ease pre-pull request fork CI as well as github-actions based dispatch (#229) 2023-08-25 17:04:51 +01:00
Damir Vandic f35f714d23 Add ref: (version) support to .tool-versions parsing (#228)
* Add support elixir ref in .tool-versions

* Make the v in ref:v optional

* Revert and refactor test changes

* Run build-dist
2023-08-15 14:05:23 +01:00
Paulo F. Oliveira afb8586fc4 Feature tool-cache for Gleam and rebar3 (#223)
* Make iterating over mirrors more flexible (and reusable)

At the same time we fix an error, where we aren't using the
mirrors for the OTP build :)

* Make installation of cache-based tool callback -based

This hopefully eases introduction of new languages at the cost
of a bit of abstraction (there's an extensive comment on how to
fill in the install options' object)

We'll soon test this abstraction by making Gleam and rebar3
cached too

* Increase our visibility when debugging

* Improve on lessons learned to ease incorporation of further caches

(starting with Gleam on Linux)

* Cache Gleam on Windows

* Cache Rebar3 on Linux

Also, gets rid of all .sh

* Cache Rebar3 on Windows

Also, gets rid of all .ps1

* Act on CI results

And also be consistent when it comes to using
fs....Sync vs fs.promise....

* Move tests to a single file

* Move main executable to a single file

* Decrease number of changes to ease review

* Expose function required for tests

* Don't async/await when not required

* Resolve post- merge-conflict resolution issues
2023-08-07 10:32:15 +01:00
github-actions[bot] 3ba5b86a2a Update 3rd party licenses (#226)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-07-22 18:53:26 +01:00
Paulo F. Oliveira f6a73a7bf1 Rework our version matching algorithm (#217)
* Update some dependencies' versions (also, get rid of husky)

* Introduce branch dependency execution

We want the most important things to fail first and prevent the
other ones from executing

e.g. if your dist/ is not updated, there's no point seeing the tests fail

* Rid ourselves of bloat

* Introduce expectations for upcoming version

* Tweak whitespace

* Tweak our calls to getVersionFromSpec (increase code consistency)

* Remove non-used variable

* Start coercing on input, stop sorting/maybe prepending 'v' on input

We'll deal with all this in a centralized place to make
it easier to reason on the code

* Revamp our getVersionFromSpec

1. stop accepting maybePrependWithV0, since this is only used in specialized
   cases
2. sort versions internally (don't expect it to come sorted)
3. compare rc/strict and .includes in a single go (don't separate these)
4. don't expect already coerced version arrays, coerce them when required
   (the maybeCoerced version had changed already, which means we're smarter
   at putting stuff inside the version array)
5. raise an exception if a semver-invalid version is not flagged as strict

* Reduce our expectations, but still be appropriate to our mission

* Update our tests for our new expectations (start the TDD bit)

* Execute npm run build-dist and keep results

* Increase inter-job dependency

* Don't expect markdownlint to be installed remotely

* Revert "Increase inter-job dependency"

This reverts commit 500b0fe7e9eec1c4f258b4d16b40719ee1d0a1ad.

* Revert "Introduce branch dependency execution"

This reverts commit fbe1317a800d7722f4e8b668c073218263d0ab17.

* Have all the CI workflows run under the same conditions

* Fix as per CI results

* Re-establish the possibility to match versions like 22.3.4.2.1.0

We cheat on the semver matching:
1. we keep an ordered list of versions that respect e.g. 22.3.4
2. if we match 22.3.4 when fetching a version, we get the last value
   from the list of versions that respect it, e.g. 22.3.4.2.1.0
   (since this is ordered, it should work as previously expected)

This increases code complexity for getVersionFromSpec,
but hopefully not by much...

We also remove throw-based test cases (non-versions will fail later,
with null), and add some tests to prove our need code.

* Trim out linting practices

But still keep them useful
2023-07-21 20:56:02 +01:00
dependabot[bot] efc884ac2f Bump word-wrap from 1.2.3 to 1.2.4 (#225)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-20 00:11:25 +01:00
github-actions[bot] e3b13dc873 Update 3rd party licenses (#224)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-07-13 09:35:33 -05:00
Paulo F. Oliveira fa5c1c2428 Improve our community standards (#218)
* Add a bug report template

* Add a feature request template

* Add a pull request template

* Add a security policy

* Lint newer files
2023-07-01 11:26:50 -05:00
github-actions[bot] 7960f20020 Update 3rd party licenses (#221)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-06-28 13:10:29 +01:00
dependabot[bot] 3401fe12ae Bump semver from 7.3.8 to 7.5.2 (#219)
* Bump semver from 7.3.8 to 7.5.2

Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.2.
- [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.3.8...v7.5.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
...

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

* Update as per `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>
2023-06-24 22:20:40 +01:00
Paulo F. Oliveira 145c80cf85 Test Erlang/OTP 26 + Elixir 1.14 on top Windows (#191)
* Add more stuff to test on

* Tweak our debugging (more verbose when the runner is in debug mode)

* Hopefully make it easier to debug

* Have the distribution work :-)

* Adapt to a better reality
2023-06-24 11:27:31 -05:00
Paulo F. Oliveira 61e01a43a5 Fix post -main-merge issue (#213) v1.16.0 v1.16 2023-06-21 15:08:08 -05:00
Christoph Grothaus df9a60921b 🐛 Fix OTP version null check (#211)
* Fix OTP version null check

* Revert "Fix OTP version null check"

This reverts commit 2c433c16ac.

* Check that the resolved versions contain the spec.

* Only perform semver version resolution when spec is not an rc and version-type is not strict

* Move version inclusion check to the end of the function, when we may have prepended a 'v'

* Refactor function return

* Add test case for strict version resolving a spec that is no available version
2023-06-15 14:45:56 +01:00
Jason Axelson 54d4f15c75 Link to the Elixir/Erlang compatibility page (#209)
* Link to the elixir/erlang compatibility page

Currently when a user encounters an incompatibility between the
requested elixir and erlang versions it isn't clear how to figure out
what the compatible versions are. This is the current error as shown to users:

> Error: Requested Elixir / Erlang/OTP version (1.11.3 / 24.2) not found in version list (did you check Compatibility between Elixir and Erlang/OTP?)

Example failure: https://github.com/ScenicFramework/scenic/pull/318/checks

This PR adds a link to
https://hexdocs.pm/elixir/compatibility-and-deprecations.html so user's
can easily see what versions are compatible.

* Update dist/index.js

* Act on review comment: on > at

---------

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2023-06-15 14:45:32 +01:00
Kian-Meng Ang ea13066252 Match the right Ubuntu version to Erlang/OTP-20 in readme (#212) 2023-06-15 14:08:54 +01:00
github-actions[bot] 53bf0a5069 Update 3rd party licenses (#207)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-05-17 13:07:48 +01:00
Paulo F. Oliveira 977eee5f6e Fix 3rd party licenses updater (action) (#202)
* Act on CI results: fix as per what GitHub Actions is requesting

Seems to have worked up until recently, but then it started
breaking :shrug

* Name the workflow a little better
2023-05-08 19:42:25 -05:00
Eric Meadows-Jönsson 51905b8795 Use @actions/tool-cache (#196) 2023-05-08 12:40:34 +02:00
Paulo F. Oliveira b9783cdeea Ease debugging, fix some CI issues, tweak folder structure (#200)
* Enable debug for OTP versions' listings

* Make it easier to detect

* Prevent error annotation on expected error

The fact that one mirror fails in the above test and others follow
working is test enough for me

A single failing mirror should fail, but it's confusing to have
an error annotation for a success (via continue-on-error) while
not being able to suppress it via GitHub Actions

* Trying to figure out why we have a rebar_core exception

Might simply be that the bug is already fixed and we need to bump rebar3

* Try to debug into non-JSON input

* Prevent error in rebar_core

We're getting Access Denied for
Fetching registry from "https://repo.hex.pm:443/registry.ets.gz?"

* Try to figure out what's breaking tests

* Make jsonParse(...).map failure more understandable

* Ease test maintenance

* Tweak folder structure while moving console._ to core._
2023-05-08 09:31:17 +01:00
Paul Guyot cf692c3264 New option to work with one or more hex.pm mirrors (#197)
* New option to work with one or more hex.pm mirrors

Add a new option called `hexpm-mirrors` for one or more hex.pm mirrors.
Default list is `builds.hex.pm`, so behavior is unaffected unless option is
used.

Signed-off-by: Paul Guyot <pguyot@kallisys.net>

* Implement suggested rewording changes from @paulo-ferraz-oliveira

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
Signed-off-by: Paul Guyot <pguyot@kallisys.net>

---------

Signed-off-by: Paul Guyot <pguyot@kallisys.net>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2023-05-04 07:27:05 +01:00
Luke Bakken 9641cb96c1 Be explicit about which file (.bat / .cm) is executed in the Windows installation flow (#198)
In my Windows 11 test environment, using Powershell Core 7.3.4, I get
the following message while running similar code to what this github
action uses:

```
Installed Elixir version follows
InvalidOperation: C:\Users\vagrant\setup-beam\src\test.ps1:4
Line |
   4 |  & "${DIR_FOR_BIN}/bin/elixir" "-v" | Write-Output
     |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Cannot run a document in the middle of a pipeline: C:\elixir\bin\elixir.
```

Adding `.bat` fixes the issue. This is probably not the root cause of
erlef/setup-beam#189, however.
2023-05-03 10:50:24 +01:00
Eric Meadows-Jönsson 94b8820fed Use @actions/http-client (#195) 2023-05-02 18:40:11 +02:00
Eric Meadows-Jönsson c2e02f777c Use new domain repo.hex.pm => builds.hex.pm (#192) v1.15.4 v1.15 2023-05-01 15:59:28 +02:00
Paulo F. Oliveira 2595a954a1 Fix tests (#184)
* Fix licenses

* Be less hopeful

* Prevent remote breakage from breaking our CI
2023-03-29 22:54:51 -05:00
Blake Kostner a255120a82 Remove Dialyzer-specific problem matcher (#182)
* fix: remove dialyzer problem matcher

* remove dialyzer problem matcher test

* remove dist problem matcher
v1.15.3
2023-03-29 14:43:12 +01:00
Bryan Paxton ffd9affe89 Update examples in readme to reference actions/checkout@v3 (#181) 2023-02-13 18:35:35 -06:00
Paulo F. Oliveira 049962787b Test rebar3 being installed after OTP via .tool-versions (#180) 2023-01-27 21:57:09 -06:00
Paulo F. Oliveira 1f06ac36d3 Simulate input github-token to fix unit tests (#174)
* Simulate input to fix unit tests
2023-01-07 13:51:47 -06:00
Bryan Paxton e3f6ffe287 Provide an input for github tokens (#172)
* Provide an input for github tokens

- By providing an input for github tokens with a default users no longer have to pass
  the github token via their environment across workflows.
- Remove GITHUB_TOKEN from our environment in all workflows

* Don't run workflows on main on pull requests

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
v1.15.2
2023-01-06 10:14:27 -06:00
github-actions[bot] 81d8403713 Update 3rd party licenses (#171)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2023-01-05 13:49:43 +00:00
dependabot[bot] c10774ce0f Bump json5 from 1.0.1 to 1.0.2 (#170)
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
v1.15.1
2023-01-04 07:35:12 +00:00
Paulo F. Oliveira 37ac1c5116 Try to prevent 403 when accessing the GitHub API (#168)
* Repeat request on error (while logging it)

* Test one change at a time

* Conditionally authorize requests

This seems to affect Windows builds, so might not be the best solution,
but we're trying to isolate the issue to move forward

* Act on CI results

* Ease consumption via a JSON.parse wrapper

We still throw the error, but in a more controlled manner

* Act on CI results
2023-01-04 07:27:57 +00:00
Paulo F. Oliveira 2d314bc413 Check behaviour on Windows pre- Gleam 0.23 (#166)
* Check behaviour on Windows pre- Gleam 0.23

* Increase consistency with .sh counterpart

* Support older versions (pre 0.22.1) on Windows

* Increase inter-script consistency

* Run `npm run build-dist`

* React to CI results
2022-12-14 09:25:50 -06:00
Paulo F. Oliveira aee3f52e58 Update versions as to not have CI fail (while fixing "non-failing" CI) (#164)
* Make README links usable

* Update versions under test

Otherwise it silently fails with "Error: Requested Erlang/OTP version
(23.2) not found in version list (should you be using option
'version-type': 'strict'?)", which is not too important since this
happens when setup-beam.js is included (which happens in the test
environment only)

* Fix failing Gleam test

I think `gleam check` requires OTP (execution complains about missing
`escript`) where `gleam format` does not
2022-12-11 18:33:12 -06:00
github-actions[bot] 96fce952fd Update 3rd party licenses (#162)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2022-12-08 07:51:51 -06:00
Paulo F. Oliveira 35850967ef Have rebar3.cmd work on a Windows CMD shell (#151)
* Provide a working rebar.cmd for system that need it

(Windows on non-PowerShell)

* Add tests for recent changes

If the "run" were to fail the job would too

* Check if Rust can find it
2022-12-01 19:16:40 +00:00
Blake Kostner b980a5ac9b Ease Elixir escripts execution by adding ${HOME}/.mix/escripts to path (#153)
* feat: add escripts to path

* Update src/install-elixir.ps1

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

* add github action combo to test escript

* force install

* use os homedir for escript install path

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
v1.15.0
2022-11-22 22:39:36 +00:00
Paulo F. Oliveira c373088147 Ease consumption by means of .tool-versions (#159)
* Ease consumption by means of .tool-versions

* Update as per self-review

* Update as per self-review

* Act on CI results

* Act on CI results

* Act on CI results

This value is check by code, in any case

* Act on CI results

* Act on CI results

* Act on CI results

It appears we can't install Elixir twice on Windows, but can
on Ubuntu; this is outside the scope of this branch's context
so I won't fix it now

* Tweak visual consumption elements

* Ease potential future maintenance and/or update
2022-11-22 22:34:21 +00:00
github-actions[bot] 529221db21 Update 3rd party licenses (#158)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2022-11-18 22:47:54 +00:00