4 releases
0.1.3 | Jan 6, 2023 |
---|---|
0.1.2 | Jan 3, 2023 |
0.1.1 | Dec 24, 2022 |
0.1.0 | Dec 24, 2022 |
#403 in Build Utils
2,447 downloads per month
Used in 9 crates
(8 directly)
16KB
225 lines
grev
A crate for working with git revision information from a build script.
lib.rs
:
This library provides the means for including partly opinionated git revision identifiers inside a Rust project (typically a binary). It provides a set of functions, all meant to be invoked from a build script, which inquire the current git revision being built against.
Typical usage could look like this:
use grev::git_revision_auto;
fn main() -> Result<()> {
let dir = env!("CARGO_MANIFEST_DIR");
if let Some(git_rev) = git_revision_auto(dir)? {
println!(
"cargo:rustc-env=VERSION={} ({})",
env!("CARGO_PKG_VERSION"),
git_rev
);
} else {
println!("cargo:rustc-env=VERSION={}", env!("CARGO_PKG_VERSION"));
}
Ok(())
}
This logic, contained in a Cargo build script (typically build.rs
,
located in a project's root), will cause the environment variable
VERSION
to be set unconditionally when building the program. It
will contain the package version and, if available, the git revision
at which the build happened (including a modifier indicating if
local changes were present). If building at a git tag, the revision
string will include this tag. The main program would then inquire
the version string using env!("VERSION")
.
Dependencies
~135KB