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
8KB
qu
qu
对 CLI 程序有自己的看法,所以您不必自己决定!它使用...
clap
进行参数解析,tracing
进行日志基础设施,tokio
进行异步操作。
tokio
和 clap
的使用都是可选的。如果您不想使用 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