11 个不稳定版本 (5 个破坏性更新)

0.6.0 2022年10月22日
0.5.1 2022年6月18日
0.4.3 2022年6月17日
0.4.2 2022年1月7日
0.1.1 2020年2月7日

#13 in #clap-parser


用于 3 crate

MIT/Apache

8KB

qu

qu 对 CLI 程序有自己的看法,所以您不必自己决定!它使用...

  • clap 进行参数解析,
  • tracing 进行日志基础设施,
  • tokio 进行异步操作。

tokioclap 的使用都是可选的。如果您不想使用 tracing,那么您不需要这个 crate - 只需执行 fn main() { .. }

示例

use qu::ick_use::*;
use std::path::PathBuf;

// This struct must not contain fields called `verbose` or `quiet` as these are used by `qu`.
#[derive(Debug, Clap)] // can use `clap::Parser` instead of `Clap`.
struct Opt {
    file_name: Option<PathBuf>,
}

// This function must contain exactly one argument that implements `clap::Parser`, and should return
// `qu::ick_use::Result` (although in reality your selected return type is ignored and
// `qu::ick_use::Result` is always used). The body of th method is copied verbatim.
#[qu::ick]
fn main(opt: Opt) -> Result {
    log::warn!("you'll see this unless you do -q");
    log::info!(
        "(use -v to get info) selected file: {:?}",
        opt.file_name
    );
    Ok(())
}

使用参数是可选的 - 如果您不使用它们,您仍然会得到 -h-v-q

use qu::ick_use::Result;

#[qu::ick]
fn main() -> Result {
    log::info!("wooooo");
    Ok(())
}

描述

这个 crate 包含宏 qu::ick,它使用最少的样板代码设置参数解析、日志记录和错误处理。它可以做到这一点,因为它为您决定配置应该是什么。如果您需要不同的配置,我建议复制生成代码来自 derive 宏,并根据您的需求进行调整。

致谢

这个 crate 基于 quicli,大部分想法都是直接从那个 crate 复制的。如果您不喜欢这个 crate 的看法,quicli 可能是一个替代方案。

许可证:MIT/Apache-2.0

依赖项

~4MB
~75K SLoC