#date-time #build-time #git-commit #time #commit #build #date

rbtag

一个过程宏,用于在编译时添加构建日期和时间以及 git 提交信息

3 个版本 (重大更改)

0.3.0 2019年1月28日
0.2.0 2019年1月16日
0.1.0 2019年1月15日

#1226Rust 模式

Download history 206/week @ 2024-03-14 566/week @ 2024-03-21 264/week @ 2024-03-28 4904/week @ 2024-04-04 24305/week @ 2024-04-11 22734/week @ 2024-04-18 17513/week @ 2024-04-25 17479/week @ 2024-05-02 17268/week @ 2024-05-09 16450/week @ 2024-05-16 26797/week @ 2024-05-23 22713/week @ 2024-05-30 15638/week @ 2024-06-06 18678/week @ 2024-06-13 19563/week @ 2024-06-20 13440/week @ 2024-06-27

71,114 每月下载量
2 crates 中使用

MIT 许可

5KB

RBTAG

rbtag 是一个过程宏,旨在为您的 crate 或项目添加构建时间信息或 git 提交信息。

Git 提交信息

要使用 Git 提交信息功能,只需将 #[derive(BuildInfo)] 添加到结构体中,并调用 .get_build_commit() 即可。输出如下所示

eaba6e2-dirty

或者

eaba6e2-clean

其中 clean 和 dirty 表示 repo 中跟踪文件中未提交更改的存在。

注意 如果您有此代码,并继续返回 'dirty',请运行 git diff 来查看哪些文件导致问题。

构建时间信息

要使用 Git 提交信息功能,只需将 #[derive(BuildDateTime)] 添加到结构体中,并调用 .get_build_timestamp() 即可。为了符合 https://reproducible-builds.org/,可能使用了两个时间源,以下为优先级

  1. 如果设置了环境变量 SOURCE_DATE_EPOCH,则使用此变量的值
  2. 如果环境变量未设置,则使用当前 git 提交的日期和时间,并以无小数部分的 UNIX 时间戳形式显示

示例输出

以下是在设置和不设置环境变量的情况下运行以下 'example' 代码的示例

#$ cargo clean && env SOURCE_DATE_EPOCH='12345678909' cargo run
12345678901
90c2266-dirty
#? cargo clean && cargo run
1547647585
90c2266-dirty

示例

use rbtag::{BuildDateTime, BuildInfo};

#[derive(BuildDateTime, BuildInfo)]
struct BuildTag;

fn main() {
    println!("{}", BuildTag{}.get_build_timestamp());
    println!("{}", BuildTag{}.get_build_commit());
}

依赖关系

~2MB
~46K SLoC