#logging #opinionated #signals #utilities #allocator #mi-malloc

cli-batteries

内置意见的命令行界面

17 个不稳定版本 (4 个破坏性更新)

0.5.0 2023年4月18日
0.4.1 2022年11月26日
0.4.0 2022年10月8日
0.3.3 2022年8月10日
0.1.4 2022年5月30日

#539 in 命令行界面

Download history 6/week @ 2024-04-22 3/week @ 2024-06-03 22/week @ 2024-07-01 116/week @ 2024-07-29

每月下载量 116
用于 2 crates

MIT 许可证

79KB
1.5K SLoC

Rust 1.5K SLoC // 0.1% comments Python 177 SLoC // 0.3% comments

CLI Batteries

crates.io docs.rs MIT License dependency status codecov CI

意见一致的命令行界面运行时实用工具。

要使用它,将其添加到您的 Cargo.toml

[dependencies]
cli-batteries = "0.1"

[build-dependencies]
cli-batteries = "0.1"

并在您的 build.rs 中调用 build_rs 函数

fn main() {
    cli_batteries::build_rs().unwrap()
}

然后在您的 src/main.rs 中定义应用程序特定的命令行参数使用 [clap::Parser][clap] 并如下运行应用程序

use cli_batteries::{version, Parser};
use std::{path::PathBuf, io::Result};
use tokio::fs::File;

#[derive(Parser)]
#[group(skip)]
struct Options {
    /// File to read
    #[clap(long, env, default_value = "Readme.md")]
    file: PathBuf,
}

async fn app(options: Options) -> Result<()> {
    let mut file = File::open(options.file).await?;
    Ok(())
}

fn main() {
    cli_batteries::run(version!(), app);
}

您可以在 示例项目中 看到这个工作的样子。

功能

  • signals: 以优雅的方式处理 Ctrl-C、SIGINT 和 SIGTERM。
  • mimalloc: 使用启用了安全强化功能的 mimalloc 分配器。
  • rand: 记录和配置随机种子。
  • rayon: 记录和配置线程数量。
  • prometheus: 启动 Prometheus 指标服务器。
  • metered-allocator: 收集内存分配指标,启用 prometheus
  • mock-shutdown: 启用 reset_shutdown 函数,允许在测试中重新启动关闭。
  • tokio-console: 启用 --tokio-console 选项,在 http://127.0.0.1:6669/ 上启动 Tokio 控制台服务器进行异步检查。
  • otlp: 启用 --trace-otlp 选项,将跟踪推送到 OpenTelemetry 收集器。

构建和测试

格式化、检查、构建和测试一切(我建议为这个创建一个 shell 别名)

cargo fmt &&\
cargo clippy --all-features --all-targets &&\
cargo test --workspace --all-features --doc -- --nocapture &&\
cargo test --workspace --all-features --all-targets -- --nocapture &&\
cargo doc --workspace --all-features --no-deps

检查文档覆盖率

RUSTDOCFLAGS="-Z unstable-options --show-coverage"  cargo doc --workspace --all-features --no-deps

待办事项

目标

也许


lines of code GitHub contributors GitHub issues GitHub pull requests GitHub Repo stars crates.io

依赖关系

~19–37MB
~577K SLoC