Skip to content

feat: migrate tools from ubi to github backend which work#6232

Merged
jdx merged 4 commits into
mainfrom
github
Sep 7, 2025
Merged

feat: migrate tools from ubi to github backend which work#6232
jdx merged 4 commits into
mainfrom
github

Conversation

@jdx

@jdx jdx commented Sep 7, 2025

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings September 7, 2025 23:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR migrates over 200 tools from using the UBI (Universal Binary Installer) backend to the GitHub backend. The migration updates tool configuration entries to use the standardized GitHub backend infrastructure.

  • Replaces "ubi:" prefixes with "github:" for repository-based tool installations
  • Removes experimental feature flags for GitHub/GitLab backends in the Rust code
  • Streamlines one yamlscript backend configuration by removing deprecated extraction options

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
src/backend/github.rs Removes experimental feature gate for github/gitlab backends
registry.toml Updates 200+ tool entries from ubi to github backend with standardized configuration

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread registry.toml Outdated
yamlscript.backends = [
"aqua:yaml/yamlscript",
"ubi:yaml/yamlscript[matching_regex=^ys,extract_all=true]",
"ubi:yaml/yamlscript[matching_regex=^ys]",

Copilot AI Sep 7, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line still uses the ubi backend while the line above was changed to github. For consistency, this should also be updated to use the github backend like the other tools in this migration.

Suggested change
"ubi:yaml/yamlscript[matching_regex=^ys]",
"github:yaml/yamlscript[matching_regex=^ys]",

Copilot uses AI. Check for mistakes.
Comment thread registry.toml
balena.description = "The balena CLI is a Command Line Interface for balenaCloud or openBalena"
balena.backends = [
"ubi:balena-io/balena-cli[extract_all=true,bin_path=bin]",
"github:balena-io/balena-cli[bin_path=bin]",

Copilot AI Sep 7, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original configuration had 'extract_all=true' which was removed. Verify that the github backend can properly extract and locate the binary with just 'bin_path=bin' for this tool, as the extraction behavior may differ between backends.

Suggested change
"github:balena-io/balena-cli[bin_path=bin]",
"github:balena-io/balena-cli[bin_path=bin,extract_all=true]",

Copilot uses AI. Check for mistakes.
Comment thread registry.toml
kscript.description = "Scripting enhancements for Kotlin"
kscript.backends = [
"ubi:kscripting/kscript[bin_path=bin,extract_all=true]",
"github:kscripting/kscript[bin_path=bin]",

Copilot AI Sep 7, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to balena-cli, the 'extract_all=true' option was removed. Confirm that the github backend can properly handle the binary extraction for kscript with only 'bin_path=bin' specified.

Copilot uses AI. Check for mistakes.
cursor[bot]

This comment was marked as outdated.

autofix-ci Bot and others added 3 commits September 7, 2025 23:10
Reverted the following tools back to ubi backend:
- bosh-backup-and-restore
- clusterawsadm
- elm
- glab
- helm-diff
- mdbook-linkcheck
- opsgenie-lamp
- tusd

These tools were migrated to github backend but need to remain on ubi.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 7, 2025

Copy link
Copy Markdown

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.5 x -- echo 18.7 ± 0.5 18.1 26.5 1.00
mise x -- echo 19.0 ± 0.8 18.3 29.7 1.02 ± 0.05

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.5 env 18.2 ± 0.5 17.5 25.8 1.00
mise env 18.3 ± 0.7 17.7 25.2 1.01 ± 0.05

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.5 hook-env 18.1 ± 0.4 17.3 19.5 1.00
mise hook-env 18.6 ± 0.7 17.3 25.0 1.02 ± 0.05

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.5 ls 16.5 ± 0.4 15.7 19.8 1.00
mise ls 16.5 ± 0.8 15.7 25.1 1.00 ± 0.05

xtasks/test/perf

Command mise-2025.9.5 mise Variance
install (cached) 165ms ✅ 102ms +61%
ls (cached) 62ms 62ms +0%
bin-paths (cached) 66ms 67ms -1%
task-ls (cached) 470ms 479ms -1%

✅ Performance improvement: install cached is 61%

Comment thread registry.toml
balena.description = "The balena CLI is a Command Line Interface for balenaCloud or openBalena"
balena.backends = [
"ubi:balena-io/balena-cli[extract_all=true,bin_path=bin]",
"github:balena-io/balena-cli[bin_path=bin]",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Archive Extraction Issue Post-Migration

The extract_all=true parameter was removed for balena-cli and kscript during the ubi to github backend migration. This change might prevent proper archive extraction, potentially causing installation failures or leaving the tools in a non-functional state.

Additional Locations (1)

Fix in Cursor Fix in Web

@jdx jdx enabled auto-merge (squash) September 7, 2025 23:33
@jdx jdx merged commit 3551ec0 into main Sep 7, 2025
23 checks passed
@jdx jdx deleted the github branch September 7, 2025 23:35
@jdx jdx mentioned this pull request Sep 7, 2025
jdx pushed a commit that referenced this pull request May 11, 2026
## Summary
- remove unsupported `exe` options from GitHub/GitLab registry backend
options
- use `bin = "solc"` for Solidity because the selected Linux release
asset is named `solc-static-linux`, but users expect the command to be
installed as `solc`
- set Sourcery `format = "tar.gz"` because the Linux release asset is
gzip-compressed even though the uploaded filename ends in `.tar.xz`
- keep the newly discovered registry command checks as commented `# test
= ...` lines instead of active tests
- rebase onto current `main`; tools removed upstream by
#9725 are no longer part of this PR

## Popularity
No new registry tools are added in this PR. This only updates existing
registry entries, so new-tool popularity data is not applicable.

`flarectl` is no longer part of this PR.
#9756 has been merged to remove it from
the registry because the current `cloudflare/cloudflare-go` releases no
longer publish static binaries and mise versions shows very low usage.

## CI status
As of 2026-05-10, the rebased PR head is
`7117c21f1be582f0f4ed1e836498b7a7561a7020`.

A previous CI run passed at the old head
`891419410da51649a24c16f2d6015eef7f2aeef6`. The branch has since been
rebased onto current `main`, the CI-token commits were dropped because
they are already upstream, and the registry tests added by this PR were
commented out.

## Changed tools

| Tool | Opts/config added | Test status | Linux install works | Notes |
| --- | --- | --- | --- | --- |
| `astro` | none | existing `astro version` test kept | yes, existing
test covers install | removed unsupported `exe = "astro"` only |
| `babashka` | none | existing `bb --version` test kept | yes, existing
test covers install | removed unsupported `exe = "bb"` only |
| `codefresh` | none | no active test | latest no; prior `0.89.6` yes |
`1.1.4` installs but `codefresh version` fails with `Cannot find module
'/snapshot/cli/node_modules/generator-function/require.mjs'`; `0.89.6`
runs `codefresh version` and prints `client version: 0.89.6` |
| `coursier` | none | commented `cs --help` kept | yes, local `mise x
coursier@latest -- cs --help` passed | removed unsupported `exe = "cs"`
|
| `databricks-cli` | none | existing `databricks --version` test kept |
yes, existing test covers install | removed unsupported `exe =
"databricks"` only |
| `depot` | none | existing `depot --version` test kept | yes, existing
test covers install | removed unsupported `exe = "depot"` only |
| `doppler` | none | existing `doppler --version` test kept | yes,
existing test covers install | removed unsupported `exe = "doppler"`
only |
| `dynatrace-monaco` | none | commented `monaco version` kept | yes,
local `mise x dynatrace-monaco@latest -- monaco version` passed |
removed unsupported `exe = "monaco"` |
| `flatc` | none | existing `flatc --version` test kept | yes, existing
test covers install | removed unsupported `exe = "flatc"` only |
| `fluttergen` | none | existing `fluttergen --version` test kept | yes,
existing test covers install | removed unsupported `exe = "fluttergen"`
only |
| `gam` | none | commented `gam version` kept | yes, local `mise x
gam@latest -- gam version` passed | removed unsupported `exe = "gam"` |
| `glab` | none | existing `glab version` test kept | yes, existing test
covers install | removed unsupported `exe = "glab"` from both platform
backends |
| `graphite` | none | existing `gt --version` test kept | yes, existing
test covers install | removed unsupported `exe = "gt"` only |
| `jwtui` | none | commented `jwtui --version` kept | yes, local `mise x
jwtui@latest -- jwtui --version` passed | removed unsupported `exe =
"jwtui"` |
| `kube-controller-tools` | none | commented `controller-gen --version`
kept | yes, local `mise x kube-controller-tools@latest -- controller-gen
--version` passed | removed unsupported `exe = "controller-gen"` |
| `localstack` | none | existing `localstack --version` test kept | yes,
existing test covers install | removed unsupported `exe = "localstack"`
only |
| `micronaut` | none | commented `mn --version` kept | yes, local `mise
x micronaut@latest -- mn --version` passed | removed unsupported `exe =
"mn"` |
| `odin` | none | commented `odin version` kept | yes, local `mise x
odin@latest -- odin version` passed | removed unsupported `exe = "odin"`
|
| `openbao` | none | commented `bao version` kept | yes, local `mise x
openbao@latest -- bao version` passed | removed unsupported `exe =
"bao"` |
| `protoc-gen-js` | none | commented `protoc-gen-js --version` kept |
yes, local `mise x protoc-gen-js@latest -- protoc-gen-js --version`
passed | removed unsupported `exe = "protoc-gen-js"` |
| `purescript` | none | commented `purs --version` kept | yes, local
`mise x purescript@latest -- purs --version` passed | removed
unsupported `exe = "purs"` |
| `railway` | none | existing `railway --version` test kept | yes,
existing test covers install | removed unsupported `exe = "railway"`
only |
| `schemacrawler` | `depends = ["java"]` | commented `schemacrawler.sh
--version` kept | yes with Java explicit | `mise x schemacrawler@latest
-- schemacrawler.sh --version` did not put `java` on PATH locally; `mise
x java@26 schemacrawler@latest -- schemacrawler.sh --version` passed |
| `signadot` | none | existing `signadot --version` test kept | yes,
existing test covers install | removed unsupported `exe = "signadot"`
only |
| `soft-serve` | none | commented `soft --version` kept | yes, local
`mise x soft-serve@latest -- soft --version` passed | removed
unsupported `exe = "soft"` |
| `solidity` | `bin = "solc"` | commented `solc --version` kept | yes,
local `mise x solidity@latest -- solc --version` passed | default
selected Linux asset name is `solc-static-linux`; `bin = "solc"`
installs the expected `solc` command |
| `sourcery` | `format = "tar.gz"` | commented `which sourcery` kept |
yes, local `mise x sourcery@latest -- which sourcery` passed | Linux
asset filename says `.tar.xz`, but upstream workflow writes it with gzip
compression |
| `starknet-foundry-sncast` | none | commented `sncast --version` kept |
yes, local `mise x starknet-foundry-sncast@latest -- sncast --version`
passed | removed unsupported `exe = "sncast"` |
| `starknet-foundry` | none | commented `snforge --version` kept | yes,
local `mise x starknet-foundry@latest -- snforge --version` passed |
removed unsupported `exe = "snforge"` |
| `swiftgen` | none | no active test | left as-is | non-Linux tool in
practice; current GitHub release contains a Mach-O universal `swiftgen`
binary, so Linux execution is not expected to work |
| `tfswitch` | none | commented `tfswitch --version` kept | yes, local
`mise x tfswitch@latest -- tfswitch --version` passed | removed
unsupported `exe = "tfswitch"` |
| `transifex` | none | commented `tx --version` kept | yes, local `mise
x transifex@latest -- tx --version` passed | removed unsupported `exe =
"tx"` |
| `tsuru` | none | commented `tsuru version --help` kept | yes, local
`mise x tsuru@latest -- tsuru version --help` passed | removed
unsupported `exe = "tsuru"` |
| `weave-gitops` | none | no active test | latest no; prior `0.38.0` and
`0.37.0` yes | latest `0.39.1-rc.1` has no release assets, but older
Linux assets still work and `gitops version` reports the expected
versions |

## Rebased-away tools

- `carp`, `dtm`, and `kpack` were removed upstream by
#9725, so this branch no longer touches
them.
- I still checked `carp` with explicit backend syntax:
`github:carp-lang/Carp@0.6.0` fails because the latest release has no
assets, while `github:carp-lang/Carp@0.5.5 -- carp --help` installs and
runs.
- `dtm` is left alone because it is non-Linux-only in practice and has
already been removed upstream.
- `flarectl` was removed from this PR;
#9756 has been merged.

## Codefresh history

`codefresh` started as an asdf-only registry entry in the initial
cross-backend registry work. It was later migrated away from asdf by
adding `ubi:codefresh-io/cli[exe=codefresh]` in
#3202, then migrated from `ubi:` to
`github:` in #6232. Current `1.x` Linux
binaries are broken at runtime, but older `0.89.6` still works through
the GitHub backend, so I did not remove it here.

## Sourcery release format

The current Sourcery Ubuntu release workflow sets
`FILENAME="sourcery-${TAG}-${SUFFIX}.tar.xz"` and then creates it with
`tar -zcvf`, which produces gzip-compressed tar content despite the
`.tar.xz` filename:
https://github.com/krzysztofzablocki/Sourcery/blob/master/.github/workflows/release_ubuntu.yml#L43-L47

I did not find a Sourcery issue or PR that explicitly calls out the
gzip-vs-`.tar.xz` mismatch when searching their issues/PRs for `tar.xz`,
`gzip`, and `tar.gz`. The closest relevant release context is:
- release automation PR:
krzysztofzablocki/Sourcery#1254
- artifact structure issue:
krzysztofzablocki/Sourcery#1255
- Linux support PR:
krzysztofzablocki/Sourcery#1188

## Solidity binary name

The current Solidity release publishes the Linux CLI asset as
`solc-static-linux`:
https://github.com/argotorg/solidity/releases/tag/v0.8.35

Without `bin = "solc"`, the GitHub backend exposes the downloaded asset
name as the command name. The `bin` option renames/symlinks the
installed binary to the expected CLI command, `solc`, which matches
Solidity docs and existing user expectations.

## Testing
- `mise run build`
- `cargo test --all-features cli::args::backend_arg::tests::test_opts`
- `target/debug/mise registry | rg '^(flarectl|carp|dtm|kpack)\b' ||
true`
- local `target/debug/mise x ...` checks for all commented test commands
listed in the table
- version-specific checks for `codefresh@1.1.4`, `codefresh@0.89.6`,
`weave-gitops@0.39.1-rc.1`, `weave-gitops@0.38.0`,
`weave-gitops@0.37.0`, `github:carp-lang/Carp@0.6.0`, and
`github:carp-lang/Carp@0.5.5`
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