Expand description
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
This crate meant to be used in conjunction with oysterpack_app_metadata. This crate generates the application build metadata source file. oysterpack_app_metadata is used to load the application build netadata.
-
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_builtis added as a build dependencybuild.rsis 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 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 ...
}Re-exports§
pub use build_time::run;
Modules§
- build_
time - collects application metadata at build time