2个版本
0.1.1 | 2022年6月22日 |
---|---|
0.1.0 | 2022年6月22日 |
#9 in #command-handler
8KB
113 行
clap-handler
命令处理器与 clap-derive
协作,以生成子命令处理器。
示例
use clap::{Parser, AppSettings};
use clap_handler::{Handler, handler, Context};
#[derive(Parser, Handler, Debug, Clone)]
#[clap(name = "Your program", author)]
pub struct Arguments {
#[clap(subcommand)]
subcommand: Subcommand,
}
#[derive(Parser, Handler, Debug, Clone)]
#[handler_inject(add_something)]
pub enum Subcommand {
First(FirstSubcommand),
}
impl Subcommand {
fn add_something(&self, ctx: &mut Context) -> anyhow::Result<()> {
// insert something
// ctx.insert(a_struct);
Ok(())
}
}
#[derive(Args, Debug, Clone)]
pub struct FirstSubcommand {
arg: String,
}
#[handler(FirstSubcommand)]
fn handle_first(me: FirstSubcommand) -> anyhow::Result<()> {
Ok(())
}
fn main() {
let args = Arguments::parse();
log::debug!("{:#?}", args);
args.run().await
}
许可证
许可协议为以下之一
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
在您选择的情况下。
依赖项
~1.5MB
~39K 行