FuelLabs / FuelLabs/fuelup

Add support for overriding individual forc plugins via versions or local paths in `fuel-toolchain.toml`

Open
#775 0 comments 0 reactions 1 assignee Claimed by @JoshuaBatty View on GitHub
enhancement
Dominant language
Rust
Stars
282
Forks
150
Avg merge
2d 17h
Merged PRs (30d)
2

Description

## Description

Currently, #772 adds support for overriding main components (forc, fuel-core) with local paths in fuel-toolchain.toml. However, individual forc plugins (forc-doc, forc-lsp, forc-fmt, etc.) cannot be overridden independently - they always use the version from the base toolchain even when forc itself is overridden.

## Expected Behavior

Users should be able to override individual forc plugins with either specific versions or local paths in a dedicated `[plugins]` section:

```toml
[toolchain]
channel = "mainnet"

[components]
forc = "0.67.2" # or "/path/to/local/forc"
fuel-core = "/path/to/local/fuel-core"

[plugins]
forc-doc = "0.68.1" # specific version
forc-lsp = "/path/to/local/forc-lsp" # local path
```

## Current Behavior

- When forc is overridden, only the main forc binary uses the specified version/path
- All forc plugins (forc-doc, forc-lsp, forc-fmt, etc.) continue using versions from the base toolchain
- No mechanism exists to override individual plugin versions or paths

## Use Case

- Developers working on specific forc plugins need to test their local builds
- Teams need to pin specific plugin versions for compatibility while using a different forc version
- Testing plugin compatibility across different version combinations

## Design Decision

Separating plugins into their own `[plugins]` section provides better semantic clarity and makes it clear that these are forc specific sub-components rather than standalone toolchain components. The section supports the same `ComponentSpec` flexibility as `[components]`, allowing both version strings and local paths.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.