Skip to content

A feature cannot declare the package tools it needs, so consumers name internal tools on the edge #709

Description

@speak-agent

Observed

When a plugin's action runs a program built from the plugin's own package, the consumer must name that program on the edge:

plugins = { version = "…", features = ["tools-embed"], host-module = true, tools = ["mcpp-embed"] }

The tool is an implementation detail of the feature. Naming it on the edge makes it part of the consumer's contract, so renaming or removing it breaks consumers on upgrade. This is how tools = ["mcpp-deps"] had to be removed in a breaking release (mcpp-community/mcpp-plugins#32).

Request

Let a feature declare the package tools it needs, for example [features.tools-embed] tools = ["mcpp-embed"]. The engine would build them when the feature is selected, and mcpp::dep_bin would find them, with nothing on the consumer's edge.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions