Skip to content

registry: use github backend for rebar#9576

Merged
jdx merged 3 commits intojdx:mainfrom
risu729:registry-rebar-github-backend
May 4, 2026
Merged

registry: use github backend for rebar#9576
jdx merged 3 commits intojdx:mainfrom
risu729:registry-rebar-github-backend

Conversation

@risu729
Copy link
Copy Markdown
Contributor

@risu729 risu729 commented May 3, 2026

rebar is just a escript (erlang script) so we don't need the asdf plugin.

Summary

  • Switch rebar from the asdf plugin to the GitHub backend for erlang/rebar3
  • Remove the asdf plugin fallback entirely
  • Add a registry test for the upstream executable output: rebar {{version}}

Notes

  • Versions before rebar 3 are no longer supported by this registry entry.
  • The GitHub release asset is rebar3; this PR keeps the installed executable as rebar3 instead of renaming it to rebar.
  • The previous asdf plugin also exposed rebar3 without renaming it to rebar, and rebar3 is the standard command name used by the upstream Rebar3 docs.

Popularity

  • GitHub: 1,803 stars, 525 forks, latest release 3.27.0 published 2026-02-27, last pushed 2026-04-30
  • Upstream docs: Rebar3 describes itself as the standard build tool within the Erlang community and documents installation/usage through the rebar3 command
  • Ecosystem packaging: available as rebar3/erlang-rebar3 in common distro package repositories such as Fedora and Arch Linux

Tests

  • cargo test registry
  • cargo run -- registry rebar

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 3, 2026

Greptile Summary

This PR migrates the rebar registry entry from the asdf plugin (mise-plugins/mise-rebar) to the native GitHub backend pointing at erlang/rebar3, using the asset_pattern = "rebar3" option to match the single cross-platform escript published in each release. A registry test is added that validates rebar3 --version output against rebar {{version}}. The depends = ["erlang"] dependency is preserved, and rebar < 3 is no longer supported (acknowledged in the PR description).

Confidence Score: 5/5

Safe to merge — minimal, isolated registry config change with no code-path side-effects.

Single-file registry change with no logic, no security implications, and a well-understood pattern (raw escript asset, make_executable is called by install_artifact for TarFormat::Raw files). The test format matches how other tools with prefixed version output (e.g. allurectl, rover) are tested. No P1/P0 findings.

No files require special attention.

Important Files Changed

Filename Overview
registry/rebar.toml Switches backend from asdf plugin to GitHub (erlang/rebar3) with a single-file asset_pattern; adds a version test; erlang dependency preserved.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["mise install rebar"] --> B["github:erlang/rebar3 backend"]
    B --> C["Fetch GitHub releases list"]
    C --> D["Match asset: asset_pattern = 'rebar3'"]
    D --> E["Download raw escript file 'rebar3'"]
    E --> F["install_artifact → TarFormat::Raw\nmake_executable called automatically"]
    F --> G["Installed as 'rebar3' in tool path"]
    G --> H["Erlang dep resolved → rebar3 is runnable"]
    H --> I["Test: rebar3 --version\nexpected: 'rebar {{version}}'"]
Loading

Reviews (3): Last reviewed commit: "Merge branch 'main' into registry-rebar-..." | Re-trigger Greptile

@risu729 risu729 force-pushed the registry-rebar-github-backend branch from c8b0dde to 8f45561 Compare May 3, 2026 18:39
@risu729 risu729 marked this pull request as ready for review May 3, 2026 18:41
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@jdx jdx enabled auto-merge (squash) May 3, 2026 18:53
@jdx jdx merged commit d02e168 into jdx:main May 4, 2026
35 checks passed
@risu729 risu729 deleted the registry-rebar-github-backend branch May 4, 2026 04:03
mise-en-dev added a commit that referenced this pull request May 5, 2026
### 🚀 Features

- **(backend)** support top-level aqua cosign verification by @risu729
in [#9111](#9111)

### 🐛 Bug Fixes

- **(schema)** validate all schema files with draft2020 and strict mode
by @risu729 in [#9594](#9594)
- **(shim)** skip network resolution for installed tool dirs by @jdx in
[#9599](#9599)

### 📚 Documentation

- **(dev-tools)** clarify vfox metadata depends for install hooks by
@risu729 in [#9573](#9573)
- **(plugins)** remove registry submission guidance by @risu729 in
[#9577](#9577)

### 📦️ Dependency Updates

- lock file maintenance by @renovate[bot] in
[#9586](#9586)

### 📦 Registry

- remove bashly asdf fallback by @risu729 in
[#9578](#9578)
- use github backend for rebar by @risu729 in
[#9576](#9576)
- add wasm-tools
([aqua:bytecodealliance/wasm-tools](https://github.com/bytecodealliance/wasm-tools))
by @2xdevv in [#9596](#9596)
- enable symlink_bins for elixir-ls by @AlternateRT in
[#9592](#9592)

### Chore

- **(release)** always append sponsor block to release notes by @jdx in
[#9580](#9580)
- warn on vendored vfox embedded plugins by @risu729 in
[#9588](#9588)
- prefer registry shorthands over cargo/npm backends in mise.toml by
@risu729 in [#9595](#9595)

## 📦 Aqua Registry Updates

### New Packages (2)

-
[`salesforce/reactive-grpc/protoc-gen-reactor-grpc`](https://github.com/salesforce/reactive-grpc)
- [`spinframework/spin`](https://github.com/spinframework/spin)

### Updated Packages (1)

- [`pnpm/pnpm`](https://github.com/pnpm/pnpm)
jdx pushed a commit that referenced this pull request May 5, 2026
## Summary

- Rebased this branch onto current `main` after #9578 and #9576 landed,
then fast-forwarded over the latest `main` lockfile maintenance merge.
- Removed registry-level `depends` from generated `RegistryTool`, the
registry schema, and backend dependency expansion.
- Added `test.tools` support for registry tests. This is consumed only
by `mise test-tool`; it does not affect normal installs.
- Kept backend/tool optional dependency support outside the registry.

## Why registry `depends` is not needed

Registry `depends` mixed unrelated concerns: install ordering, runtime
companions, and tools needed only for registry tests. That made
shorthand registry entries apply dependencies too broadly across every
backend.

The remaining valid dependency paths are covered elsewhere:

- vfox plugins can declare install dependencies in plugin metadata with
`PLUGIN.depends`; mise already reads those through the vfox backend.
- asdf plugins require `depends`, but rebar was the only registry entry
still relying on that path, and #9576 moved it to
`github:erlang/rebar3`. New asdf plugins are not being added to the
registry.
- backend install hooks that need extra external tools are too fragile
for registry shorthand entries. Those tools should not be added to the
registry just to satisfy postinstall scripts.
- tools needed only to execute `test.cmd` belong in `test.tools`, which
is consumed only by `mise test-tool` and does not affect normal
installs.

## Registry file changes (`registry/*.toml`)

| Tool | Change |
|------|--------|
| **android-sdk** | Removed root `depends = ["java"]`; added `test.tools
= ["java"]` because the vendored vfox metadata notes Java 11+ and
`sdkmanager` shells out to `java`. |
| **elixir** | Removed root `depends = ["erlang"]`; `core:elixir`
handles Erlang as a backend dependency. |
| **google-java-format** | Removed root `depends = ["java"]`; its Linux
registry asset is a native executable, and the Docker probe passed
without adding Java. |
| **gradle** | Removed root `depends = ["java"]`; added `test.tools =
["java"]` because the Gradle launcher requires `java` for `gradle -V`. |
| **kscript** | Removed root `depends = ["kotlin"]`; added `test.tools =
["kotlin"]` after Docker/registry CI showed `kscript --version` fails
without Kotlin. |
| **ktlint** | Removed root `depends = ["java"]`; its registry test
remains disabled. |
| **kubecolor** | Removed root `depends = ["kubectl"]`; `mise x
kubecolor -- kubecolor --kubecolor-version` passed in the e2e Docker
image with no `kubectl` on PATH, so no `test.tools` entry is needed. |
| **pipenv** | Removed root `depends = ["python"]`; added `test.tools =
["python"]` because the vendored vfox post-install hook creates a venv
with `python3`/`python`, and the test should not rely on system Python.
|
| **pipx** | Removed root `depends = ["python"]`; added `test.tools =
["python"]` because the aqua `pipx.pyz` launcher uses `#!/usr/bin/env
python3`. |
| **rebar** | Removed root `depends = ["erlang"]`; #9576 moved this
registry entry to `github:erlang/rebar3`; added `test.tools =
["erlang"]` because `rebar3 --version` needs the Erlang runtime. |
| **sbt** | Removed root `depends = ["java"]`; the conda backend
installs OpenJDK in the package environment and the Docker probe passed
without registry `test.tools`. |
| **spark** | Removed root `depends = ["java"]`; no registry test
command is present. |
| **tridentctl** | Removed root `depends = ["kubectl"]`; `tridentctl
version --client` passed in Docker without `kubectl`. |

## vfox notes

- `vfox-android-sdk` is vendored in `crates/vfox/embedded-plugins/`; its
metadata says Java 11+ is required, and the installed `sdkmanager`
launcher checks `JAVA_HOME`/`java`. Its post-install hook only uses
common shell utilities (`mv`, `mkdir`, `rm`, `chmod`), which are not
registry tools.
- `vfox-pipenv` is vendored in `crates/vfox/embedded-plugins/`; its
post-install hook explicitly searches for `python3`/`python`, creates a
venv, then runs pip. Utility shell usage such as `pwd`, `mkdir`, and
`chmod` is intentionally ignored.
- `vfox-gradle` is not vendored under `crates/vfox/embedded-plugins/`;
the registry test still needs Java because the Gradle launcher itself
invokes `java`.

## Pipenv note

`mise-plugins/vfox-pipenv/pull/1` must be merged for `pipenv` to work
properly through the vfox backend. GitHub Actions and the e2e image
currently have Python available, but the registry should not rely on
system Python: `PLUGIN.depends` only declares plugin execution order, so
without a managed Python declaration pipenv falls back to whatever
system Python is available.

## Validation

- `taplo fmt --check registry/android-sdk.toml registry/gradle.toml
registry/pipenv.toml registry/pipx.toml registry/kscript.toml
registry/rebar.toml`
- `git diff --check`
- Docker image used by registry CI: `ghcr.io/jdx/mise:e2e`
- Direct Docker probes with `mise x <tool> -- <test.cmd>` for
`android-sdk`, `google-java-format`, `gradle`, `kscript`, `kubecolor`,
`pipenv`, `pipx`, `sbt`, and `tridentctl`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants