oysterpack_built 0.3.2

OysterPack Built
Documentation
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:

```ignore
let built_rs = concat!(env!("OUT_DIR"), "/built.rs");
```

## How to integrate within your project

1. Add the following to **Cargo.toml**:

   ```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 dependency
   - `build.rs` is the name of the cargo build script to use
   - [oysterpack_app_metadata][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][oysterpack_app_metadata]

[oysterpack_app_metadata]: https://crates.io/crates/oysterpack_app_metadata

2. Include the following in **build.rs**:

   ```ignore
   extern crate oysterpack_built;

   fn main() {
      oysterpack_built::run();
   }
   ```

3. 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!()](https://docs.rs/oysterpack_app_metadata/latest/oysterpack_app_metadata/macro.op_build_mod.html)):

```ignore
#[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 ...
}
```