#workspace #cargo-workspace #occurs #times #cargo #inherit #cargo-toml

app cargo-dependency-inheritor

Utility that inherits dependencies from the main workspace if they occur 'n' or more times in the workspace

2 releases

0.1.1 Sep 23, 2022
0.1.0 Sep 20, 2022

#6 in #inherit

MIT license

15KB
176 lines

Cargo Workspace Dependency Inheritor

Utility that inherits dependencies from the main workspace if they occur n or more times in the workspace.

Workspace Inheritance was stabilized in version 1.64. See [workspace.package], [workspace.dependencies], and inheriting-a-dependency-from-a-workspace for more information.

How to Use

To inherit a dependency that occurs five or more times in the workspace, use the following command:

cargo install cargo-dependency-inheritor
cargo dependency-inheritor --workspace-path "path/to/workspace/Cargo.toml" -n 5

This command edits your toml files, make sure to have a back up

Process

Dependencies can be inherited from a workspace by specifying the dependency in the workspace's [workspace.dependencies] table. After that, add it to the [dependencies] table with workspace = true. This crate automates the process.

  1. Read packages defined in [workspace] section of the workspace-file.
  2. Note which dependencies occur n or more times.
  3. Update all dependencies that occurred n or more times:
    1. Turn dependency = "0.1.3" into inline tables.
    2. Add workspace = true key-value to the dependency inline table.
    3. Remove version from inline table if exists (this will be specified in the workspace file).
  4. Add [workspace.dependencies] table to root workspace file with all the dependencies that occurred n times and their version.

Result:

# in a project
[dependencies]
tokio = { workspace = true }

# in the workspace
[workspace.dependencies]
tokio = "1.0"

Dependencies

~5.5MB
~114K SLoC