Estou usando clap
crate para manipular argumentos de linha de comando. Como imprimo o número da versão e um argumento de linha de comando personalizado juntos? O código abaixo, quando executado, cargo run -- --name Harry --version
imprime apenas o número da versão.
use clap::Parser;
/// Simple program to greet a person
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
/// Name of the person to greet
#[arg(short, long)]
name: String,
/// Number of times to greet
#[arg(short, long, default_value_t = 1)]
count: u8,
}
fn main() {
let args = Args::parse();
for _ in 0..args.count {
println!("Hello {}!", args.name);
}
}
Saída de corrente
clap_demo 0.1.0
Saída esperada
Hello Harry!
clap_demo 0.1.0
Carga.toml
[package]
name = "clap_demo"
version = "0.1.0"
edition = "2021"
[dependencies]
clap = { version = "4.5.26", features = ["derive", "env"] }
O gerado automaticamente
version
tem a açãoArgAction::Version
, que mostra apenas o nome e a versão.Se você quiser personalizar o comportamento, será necessário desabilitar o gerado automaticamente e adicionar um novo como este:
Aviso:
crate_name!
ecrate_version!
precisa docargo
recurso de palmas.