rbtag is a procedural macro designed to add build time information or git commit information to your crate or project.
To use the Git commit Info functionality just add #[derive(BuildInfo)]
to a struct and call .get_build_commit()
on it. The output looks like the following:
shell
eaba6e2-dirty
OR
shell
eaba6e2-clean
Where clean vs dirty indicates the presence of uncommited changes to tracked files in the repo.
NOTE If you have this code continue to return 'dirty', run git diff
to see what files are causing the issue.
To use the Git commit Info functionality just add #[derive(BuildDateTime)]
to a struct and call .get_build_timestamp()
on it. In order to comply with https://reproducible-builds.org/, two sources of time are possibly used the following precedence
1) If the environmental variable SOURCE_DATE_EPOCH
is set, the value in this variable will be used
2) If the environmental variable is NOT set, the timestamp of the current git commit is used and displayed as a UNIX timestamp with no fractional component
The following is an example of running the below 'example' code with and without an environmental variable set ```shell
12345678901 90c2266-dirty
1547647585 90c2266-dirty ```
```rust use rbtag::{BuildDateTime, BuildInfo};
struct BuildTag;
fn main() { println!("{}", BuildTag{}.getbuildtimestamp()); println!("{}", BuildTag{}.getbuildcommit()); }
```