#cargo-workspace #features #cargo #cargo-subcommand #crates #logging-tracing

app cargo-feature-aspect

一个在 Cargo 工作区中创建和更新功能方面的 Cargo 插件

10 个版本

0.1.10 2024年6月30日
0.1.9 2024年6月29日

#77Cargo 插件

Download history 301/week @ 2024-06-27 29/week @ 2024-07-04

298 每月下载量

Apache-2.0 OR MIT

29KB
463

cargofeature-aspect

一个在 Cargo 工作区中创建和更新功能方面的 Cargo 插件。

安装

只需使用 cargo 命令并执行 cargo install cargo-feature-aspect 即可。

详细信息

功能方面是一种通常应该存在于所有依赖于某个共享 crate 的工作区中的 crate 的功能。这个共享 crate 的功能将被传播到所有依赖者。

例如,如果假设有一个名为 logging 的 crate 有一个名为 enable-tracing 的功能,所有依赖于 logging 的 crate 可能都想有自己的 enable-tracing 功能,该功能在本地 crate 中启用额外的跟踪功能,并在所有依赖 crate 上启用 enable-tracing 功能。换句话说,我们希望直接依赖于 logging 的 crate 有一个类似的功能

[package]
name = "foo"

[dependencies]
logging = "..."

[features]
enable-tracing = ["logging/enable-tracing"]

...并且二次依赖者将获得一个匹配的功能,该功能将此功能向下传播

[package]
name = "bar"

[dependencies]
foo = "..."

[features]
enable-tracing = ["foo/enable-tracing"]

此命令在 crate 图中创建和更新此类功能方面。

示例用法

# Any crate that indirectly depends on the `logging` crate should have a feature
# `enable-tracing` that is propagated through all dependency crates.
cargo feature-aspect --name enable-tracing --leaf-feature logging/enable-tracing

# Same as above, but `--name` is inferred from `--leaf-feature`.
cargo feature-aspect --leaf-feature logging/enable-tracing

# Any such crate should also enable the `logging` optional dependency.
cargo feature-aspect --leaf-feature logging/enable-tracing --add-feature-param dep:logging

# Do not re-order the `enable-tracing` feature param array when it is not already in
# alphabetical order.
cargo feature-aspect --leaf-feature logging/enable-tracing --no-sort

# Dry-run to see what changes would be made
cargo feature-aspect --leaf-feature logging/enable-tracing --dry-run

# Verify that the feature aspect is up-to-date (useful for CI)
cargo feature-aspect --leaf-feature logging/enable-tracing --verify

归属

此 crate 中的一些代码是从 cargo-edit 复制的,其版权为 (c) 2015 Without Boats, Pascal Hertleif。

依赖

~11–21MB
~285K SLoC