Crates.io | oysterpack_built |
lib.rs | oysterpack_built |
version | 0.3.2 |
source | src |
created_at | 2018-09-22 18:54:13.722566 |
updated_at | 2018-10-28 19:52:20.384776 |
description | OysterPack Built |
homepage | https://github.com/oysterpack/oysterpack/tree/master/oysterpack-built |
repository | https://github.com/oysterpack/oysterpack |
max_upload_size | |
id | 86021 |
size | 44,615 |
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");
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 useInclude 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 ...
}