Expand description
clap-cargo: Re-usable CLI flags for cargo plugins
§Examples
use clap::Parser;
// ...
#[derive(Debug, Parser)]
#[command(styles = clap_cargo::style::CLAP_STYLING)]
struct Cli {
#[command(flatten)]
manifest: clap_cargo::Manifest,
#[command(flatten)]
workspace: clap_cargo::Workspace,
#[command(flatten)]
features: clap_cargo::Features,
}
let cli = // ...
let mut metadata = cli.manifest.metadata();
cli.features.forward_metadata(&mut metadata);
let metadata = metadata.exec().unwrap();
let (selected, excluded) = cli.workspace.partition_packages(&metadata);§Relevant crates
Other crates that might be useful for cargo plugins:
- escargot for wrapping
cargo-build,carg-run,cargo-test, etc. - cargo_metadata for getting crate information.
- clap-verbosity for adding logging to your CLI.