#clap #command-handler #derive #proc-macro #generate

clap-handler-derive

命令处理器与 clap-derive 一起生成子命令处理器

1 个不稳定版本

0.1.0 2022年6月22日

#13#command-handler

每月43次下载
clap-handler 中使用

MIT/Apache

10KB
168

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
}

更多复杂示例,请参阅 annisswa

许可证

在以下许可证中选择一项

由您选择。

依赖项

~1.5MB
~35K SLoC