#version #vergen #clap #subcommand #reusable #rustc-version #info

clap-vergen

使用 vergen 的可重用 clap 子命令 version

2 个不稳定版本

0.2.0 2022年8月7日
0.1.0 2022年8月6日

#1843 in 开发工具

MIT/Apache

9KB
68 代码行

clap-vergen

使用 vergen 的可重用 clap 子命令 version

用法

build.rs 中获取版本信息

use vergen::{vergen, Config};

fn main() {
    let mut cfg = Config::default();
    *cfg.sysinfo_mut().name_mut() = false;
    vergen(cfg).expect("Fail to generate version info");
}

然后,添加一个子命令

use clap::Parser;

#[derive(Debug, clap::Parser)]
enum Cli {
    Version(clap_vergen::Version),
}

fn main() {
    match Cli::from_args() {
        Cli::Version(version) => {
            clap_vergen::print!(version);
        }
    }
}

这将在可执行文件中创建一个 version 子命令

$ ./target/debug/clap-vergen-example version --help
clap-vergen-example-version 
Output detail version of executable

USAGE:
    clap-vergen-example version [OPTIONS]

OPTIONS:
    -h, --help    Print help information
        --json    Output version info as JSON

支持两种输出格式

$ ./target/debug/clap-vergen-example version
Build Timestamp:     2022-08-06T08:16:05.843030928Z
Build Version:       0.1.0
Commit SHA:          f1af7e4b9fc58b7aa73b1e14a617d9a341a9880d
Commit Date:         2022-08-06T08:12:22Z
Commit Branch:       main
rustc Version:       1.63.0-beta.8
rustc Channel:       beta
rustc Host Triple:   x86_64-unknown-linux-gnu
rustc Commit SHA:    7410ebb8f69516d0034cc99793bc3dcbc84d4a9b
cargo Target Triple: x86_64-unknown-linux-gnu
cargo Profile:       debug

JSON 输出

$ ./target/debug/clap-vergen-example version --json
{
  "build_timestamp": "2022-08-06T08:16:05.843030928Z",
  "build_semver": "0.1.0",
  "rustc_channel": "beta",
  "rustc_commit_date": "2022-08-04",
  "rustc_commit_hash": "7410ebb8f69516d0034cc99793bc3dcbc84d4a9b",
  "rustc_host_triple": "x86_64-unknown-linux-gnu",
  "rustc_llvm_version": "14.0",
  "rustc_semver": "1.63.0-beta.8",
  "cargo_features": "default",
  "cargo_profile": "debug",
  "cargo_target_triple": "x86_64-unknown-linux-gnu",
  "git_branch": "main",
  "git_commit_timestamp": "2022-08-06T08:12:22Z",
  "git_semver": "0.1.0",
  "git_sha": "f1af7e4b9fc58b7aa73b1e14a617d9a341a9880d"
}

查看 clap-vergen-example 以获取工作示例。

许可证

© 2022 Toshiki Teramura (@termoshtt)

本项目许可证为

任选其一。

依赖

~4MB
~78K SLoC