9 releases
Uses old Rust 2015
0.3.2 | Oct 28, 2018 |
---|---|
0.3.1 | Oct 13, 2018 |
0.2.3 | Oct 1, 2018 |
0.2.2 | Sep 27, 2018 |
0.1.1 | Sep 22, 2018 |
#509 in Build Utils
34 downloads per month
Used in 3 crates
31KB
469 lines
From a DevOps perspective, it is critical to know exactly what is deployed.
oysterpack_built
is used as a build-time dependency to gather application build related metadata.
The information is gathered from the cargo build. It produces a Rust source file named built.rs in the project's build script output directory.
The location can be obtained via:
let built_rs = concat!(env!("OUT_DIR"), "/built.rs");
How to integrate within your project
-
Add the following to Cargo.toml:
[package] build = "build.rs" [dependencies] oysterpack_app_metadata = "0.1" semver = "0.9" chrono = "0.4" [build-dependencies] oysterpack_built = "0.3"
oysterpack_built
is added as a build dependencybuild.rs
is the name of the cargo build script to use- oysterpack_app_metadata is used in conjuction with this crate to load the application build metadata into the domain model defined by oysterpack_app_metadata
-
Include the following in build.rs:
extern crate oysterpack_built; fn main() { oysterpack_built::run(); }
-
The build script will by default write a file named built.rs into Cargo's build output directory, which will contain the following constants:
Constant | Type | Description |
---|---|---|
BUILT_TIME_UTC | &str | The built-time in RFC822, UTC |
CFG_ENDIAN | &str | The endianness, given by cfg!(target_endian). |
CFG_ENV | &str | The toolchain-environment, given by cfg!(target_env). |
CFG_FAMILY | &str | The OS-family, given by cfg!(target_family). |
CFG_OS | &str | The operating system, given by cfg!(target_os). |
CFG_POINTER_WIDTH | u8 | The pointer width, given by cfg!(target_pointer_width). |
CFG_TARGET_ARCH | &str | The target architecture, given by cfg!(target_arch). |
CI_PLATFORM | Option<&str> | The Continuous Integration platform detected during compilation. |
DEBUG | bool | Value of DEBUG for the profile used during compilation. |
FEATURES | [&str; N] | The features that were enabled during compilation. |
FEATURES_STR | &str | The features as a comma-separated string. |
GIT_VERSION | Option<&str> | If the crate was compiled from within a git-repository, GIT_VERSION contains HEAD's tag. The short commit id is used if HEAD is not tagged. |
HOST | &str | The host triple of the rust compiler. |
NUM_JOBS | u32 | The parallelism that was specified during compilation. |
OPT_LEVEL | &str | Value of OPT_LEVEL for the profile used during compilation. |
PKG_AUTHORS | &str | A colon-separated list of authors. |
PKG_DESCRIPTION | &str | The description. |
PKG_HOMEPAGE | &str | The homepage. |
PKG_NAME | &str | The name of the package. |
PKG_VERSION | &str | The full version. |
PKG_VERSION_MAJOR | &str | The major version. |
PKG_VERSION_MINOR | &str | The minor version. |
PKG_VERSION_PATCH | &str | The patch version. |
PKG_VERSION_PRE | &str | The pre-release version. |
PROFILE | &str | release for release builds, debug for other builds. |
RUSTC | &str | The compiler that cargo resolved to use. |
RUSTC_VERSION | &str | The output of rustc -V |
RUSTDOC | &str | The documentation generator that cargo resolved to use. |
RUSTDOC_VERSION | &str | The output of rustdoc -V |
DEPENDENCIES_GRAPHVIZ_DOT | &str | graphviz .dot format for the effective dependency graph |
The application metadata can be loaded via oysterpack_app_metadata op_build_mod!()):
#[macro_use]
extern crate oysterpack_app_metadata;
extern crate chrono;
extern crate semver;
// loads the application metadata into `pub mod build {...}'
op_build_mod!()
use oysterpack_app_metadata::Build;
fn main () {
let app_build = build::get();
// integrate the application build metadata ...
}
Dependencies
~28–40MB
~738K SLoC