Skip to content

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

@JoshuaBatty

Description

@JoshuaBatty

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:

[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.

Metadata

Metadata

Assignees

Labels

enhancementenhancement to a current feature

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions