Files
renovate/lib/modules/manager/proto/readme.md
Sebastian Poxhofer a2d1b8cf0a fix(manager/asdf,mise,proto): use rust-version datasource for rust (#45143)
The `rust` tool was resolved via the `github-tags` datasource on
`rust-lang/rust` with the default (semver) versioning. That meant the
release channel values rustup actually accepts were not understood.

Switch all three managers to the `rust-version` datasource, which
declares `rust-release-channel` as its `defaultVersioning`, matching the
`rust-toolchain` manager and `lib/util/exec/containerbase.ts`.

`packageName` becomes `rust` rather than the `rust-lang/rust` owner/repo
slug, which is meaningless for this datasource. It is set rather than
omitted because mise would otherwise fall back to the backend-prefixed
depName, yielding `core:rust` / `asdf:rust` as the package name.

No explicit `versioning` is set: the datasource default already applies,
and the convention in these files is to set `versioning` only to
override a datasource default.

Behaviour change: `nightly-<date>` pins were previously skipped as
`invalid-value` and now update. `stable`, `beta` and `nightly` are now
recognised as ranges rather than flagged invalid, but still only resolve
to a concrete version under `rangeStrategy: pin`.
2026-08-10 07:54:37 +00:00

53 lines
2.3 KiB
Markdown

Renovate can update tool versions in [proto](https://moonrepo.dev/proto) `.prototools` configuration files.
### How it works
Proto uses `.prototools` files (TOML format) to pin tool versions at the directory level.
Tool versions are declared as top-level key-value pairs:
```toml
node = "22.14.0"
bun = "1.2.2"
go = "~1.22"
proto = "0.56.0"
```
Renovate extracts these version pins and updates them using the appropriate datasource for each tool.
Non-version sections (`[settings]`, `[plugins]`, `[tools]`, `[env]`, `[shell]`, `[backends]`) are ignored.
### Supported tools
Renovate's `proto` manager supports the following built-in proto tools:
| Tool | Datasource | Package |
| -------- | ----------------- | ---------------------- |
| `bun` | `github-releases` | `oven-sh/bun` |
| `deno` | `github-releases` | `denoland/deno` |
| `go` | `github-tags` | `golang/go` |
| `moon` | `github-releases` | `moonrepo/moon` |
| `node` | `node-version` | `node` |
| `npm` | `npm` | `npm` |
| `pnpm` | `npm` | `pnpm` |
| `yarn` | `npm` | `@yarnpkg/cli` |
| `python` | `github-tags` | `python/cpython` |
| `ruby` | `ruby-version` | `ruby-version` |
| `rust` | `rust-version` | `rust` |
| `proto` | `github-releases` | `moonrepo/proto` |
| `gh` | `github-releases` | `cli/cli` |
| `poetry` | `github-releases` | `python-poetry/poetry` |
| `uv` | `github-releases` | `astral-sh/uv` |
### Limitations
- **Third-party plugins**: Tools installed via `[plugins]` URLs (custom WASM plugins) are reported as `unsupported-datasource` and skipped.
You can use Renovate's `customManagers` with regex to handle these if needed.
- **Version aliases**: Values like `latest`, `stable`, `canary`, or `nightly` are skipped as they cannot be updated via semver.
- **Version ranges**: Proto supports partial versions (`22`, `~1.20`, `^3.1`) which Renovate passes through as-is.
The appropriate versioning strategy for each datasource handles these.
- **asdf backend syntax**: Proto supports `"asdf:tool" = "version"` syntax for tools via the asdf backend.
This is not currently supported by the manager.