3 个版本 (重大更改)
0.3.0 | 2019年1月28日 |
---|---|
0.2.0 | 2019年1月16日 |
0.1.0 | 2019年1月15日 |
#1226 在 Rust 模式
71,114 每月下载量
在 2 crates 中使用
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/,可能使用了两个时间源,以下为优先级
- 如果设置了环境变量
SOURCE_DATE_EPOCH
,则使用此变量的值 - 如果环境变量未设置,则使用当前 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