//! Adds the feature to print the build information to your program with minimal boilerplate.
//!
//! 1. Call `ever!()` at the top of `main` function of your program.
//!
//! ```rust
//! use ever::ever;
//!
//! fn main() {
//! ever!();
//!
//! println!("Hello, world!");
//! }
//! ```
//!
//! 2. Set the environment variable `EVER` to `1` when starting the program. The build information is printed and the program exits with status `1`.
//!
//! ```bash,ignore
//! $ EVER=1 ./your_program
//! your_program 0.1.0 (debug):
//!
//! date: Sat Dec 5 11:17:09 2020 +0900
//! commit: 49fec228607448df6fcb8950171441a1f56c2e7b-dirty
//! user: yushiomote
//! host: your_host
//! builddir: /home/yushiomote/your_program
//! rustc: 1.48.0 (7eac88abb 2020-11-16)
//! ```
//!
//! If you want to change the environment variable name, pass your alternative as the argument.
//!
//! ```rust
//! # use ever::ever;
//! ever!("MY_VERSION");
//! ```
//!
//! ```bash,text
//! $ MY_VERSION=1 ./your_program
//! ```
//!
//! ## Dump `Cargo.lock`
//!
//! By setting the environment variable to `dump_lock`, the program dumps the content of `Cargo.lock` used during build.
//!
//! ```bash,ignore
//! $ EVER=dump_lock ./your_program
//! # This file is automatically @generated by Cargo.
//! # It is not intended for manual editing.
//! [[package]]
//! name = "autocfg"
//! version = "1.0.1"
//! source = "registry+https://github.com/rust-lang/crates.io-index"
//! ...
//! ```
//!
//! ## Individual parameters
//!
//! Provides macros to get individual parameters.
//!
//! ```rust
//! use ever::{build_commit_hash, build_dir, build_date};
//!
//! fn main() {
//! println!("build_commit_hash: {}", build_commit_hash!());
//! println!("build_dir: {}", build_dir!());
//! println!("build_date: {}", build_date!());
//! }
//! ```
//!
//! All the types returned by those macros are `&'static str`.
//!
//! ## Note
//!
//! The build information is retrieved only when the source file where `ever` macro is called is compiled.
//!
use proc_macro_hack;
/// Prints the build information when the environment variable is set.
///
/// See [`the top page`](index.html) for the usage.
pub use ever;
/// Returns the package name.
///
/// ```rust
/// // Prints "your_program"
/// println!("{}", ever::package_name!())
/// ```
pub use package_name;
/// Returns the package version.
///
/// ```rust
/// // Prints "0.1.0"
/// println!("{}", ever::package_version!())
/// ```
pub use package_version;
/// Returns the package description.
///
/// ```rust
/// // Prints "your awesome package"
/// println!("{}", ever::package_description!())
/// ```
pub use package_description;
/// Returns the build date.
///
/// ```rust
/// // Prints "Sat Dec 5 10:47:42 2020 +0900"
/// println!("{}", ever::build_date!());
/// ```
pub use build_date;
/// Returns the build mode, which is either `release` or `debug`.
///
/// ```rust
/// // Prints "release"
/// println!("{}", ever::build_mode!());
/// ```
pub use build_mode;
/// Returns the git commit hash.
///
/// If the repository has uncommited files, the hash is suffixed with `-dirty`.
///
/// ```rust
/// // Prints "49fec228607448df6fcb8950171441a1f56c2e7b-dirty"
/// println!("{}", ever::build_commit_hash!());
/// ```
pub use build_commit_hash;
/// Returns the username who builds the package.
///
/// ```rust
/// // Prints "your_username"
/// println!("{}", ever::build_commit_hash!());
/// ```
pub use build_username;
/// Returns the hostname where the package is built.
///
/// ```rust
/// // Prints "your_hostname"
/// println!("{}", ever::build_hostname!());
/// ```
pub use build_hostname;
/// Returns the directory path where the package is built.
///
/// ```rust
/// // Prints "/path/to/your_build_dir"
/// println!("{}", ever::build_dir!());
/// ```
pub use build_dir;
/// Returns the version of rustc used to build the program.
///
/// ```rust
/// // Prints ""
/// println!("{}", ever::rustc_version!());
/// ```
pub use rustc_version;
/// Returns the content of `Cargo.lock` to build the program.
///
/// ```rust
/// // Prints "/path/to/your_build_dir"
/// println!("{}", ever::lock_file!());
/// ```
pub use lock_file;