#cargo-toml #clap #disk #disk-usage #applications #version #name

autoclap

👏 自动将 Cargo.toml 的信息(名称、版本、作者、仓库)传播到应用程序

23 个版本

0.3.15 2023年2月19日
0.3.11 2022年12月30日
0.3.10 2022年11月17日
0.2.2 2022年4月2日
0.2.1 2022年1月28日

#435开发工具

Download history 77/week @ 2024-03-11 49/week @ 2024-03-18 97/week @ 2024-03-25 90/week @ 2024-04-01 49/week @ 2024-04-08 52/week @ 2024-04-15 52/week @ 2024-04-22 102/week @ 2024-04-29 49/week @ 2024-05-06 39/week @ 2024-05-13 181/week @ 2024-05-20 43/week @ 2024-05-27 57/week @ 2024-06-03 43/week @ 2024-06-10 30/week @ 2024-06-17 50/week @ 2024-06-24

185 每月下载量
7 crate 中使用

MIT 许可证

5KB
54

autoclap

CD-auto

此库基于 clap 构建,并自动将 Cargo.toml 的信息(名称、版本、作者、仓库)传播到使用它的应用程序。

运行 app --help 现在会自动将此信息包含在其输出中。

为什么?

Cargo.toml 是包含应用程序属性(如名称、版本、作者、描述)的唯一真实来源

  • 名称
  • 版本
  • 作者(s)
  • 描述

这些信息通常在应用程序的 main 中重复,导致潜在的不一致性(在一个地方更新但不在另一个地方更新)。

此外,一个统一这些内容的 crate 将提供跨所有使用它的应用程序的一致性。

最后,应用程序初始化的代码量最小。

用法

use clap::Command;
use autoclap::autoclap;

fn main() {
    let app = autoclap!();

    app.arg(
        Arg::with_name("myarg")
            .long("myarg")
            .short('m')
            .help("My arg description."),
    );
    let args = app.clone().try_get_matches().unwrap_or_else(|e| e.exit());

    if args.get_flag("update") { /* My implementation.*/}
}

现在,运行 app --help 现在产生

app 0.1.0 :: https://github.com/username/app/releases/tag/0.1.0
Crate Author <crateauthor@e.mail>
🧵 The crate awesome description.

版本

包仓库 URL 与包版本连接,形成指向特定版本的 URL。

当发布与 crate 相同版本的发布时,此 URL 将生效。

autoclap 提供了对 GitHub 的原生支持。

依赖项

~1MB
~15K SLoC