pub struct CargoPkgInfo {}
macro_rules! unescape_newlines {
($s:expr) => {
Box::leak($s.replace("\\n", "\n").into_boxed_str())
};
}
impl CargoPkgInfo {
#[allow(dead_code)]
pub fn pkg_name() -> Option<&'static str> {
option_env!("CARGO_PKG_NAME")
}
#[allow(dead_code)]
pub fn crate_name() -> Option<&'static str> {
option_env!("CARGO_CRATE_NAME")
}
#[allow(dead_code)]
pub fn pkg_version() -> Option<&'static str> {
option_env!("CARGO_PKG_VERSION")
}
#[allow(dead_code)]
pub fn version_major() -> Option<&'static str> {
option_env!("CARGO_PKG_VERSION_MAJOR")
}
#[allow(dead_code)]
pub fn version_major_numeric() -> Option<u32> {
option_env!("CARGO_PKG_VERSION_MAJOR").and_then(|s| s.parse().ok())
}
#[allow(dead_code)]
pub fn version_minor() -> Option<&'static str> {
option_env!("CARGO_PKG_VERSION_MINOR")
}
#[allow(dead_code)]
pub fn version_minor_numeric() -> Option<u32> {
option_env!("CARGO_PKG_VERSION_MINOR").and_then(|s| s.parse().ok())
}
#[allow(dead_code)]
pub fn version_patch() -> Option<&'static str> {
option_env!("CARGO_PKG_VERSION_PATCH")
}
#[allow(dead_code)]
pub fn version_patch_numeric() -> Option<u32> {
option_env!("CARGO_PKG_VERSION_PATCH").and_then(|s| s.parse().ok())
}
#[allow(dead_code)]
pub fn version_pre() -> Option<&'static str> {
option_env!("CARGO_PKG_VERSION_PRE")
}
#[allow(dead_code)]
pub fn authors() -> Option<&'static str> {
option_env!("CARGO_PKG_AUTHORS")
}
#[allow(dead_code)]
pub fn description() -> Option<&'static str> {
option_env!("CARGO_PKG_DESCRIPTION")
}
#[allow(dead_code)]
pub fn homepage() -> Option<&'static str> {
option_env!("CARGO_PKG_HOMEPAGE")
}
#[allow(dead_code)]
pub fn repository() -> Option<&'static str> {
option_env!("CARGO_PKG_REPOSITORY")
}
#[allow(dead_code)]
pub fn license() -> Option<&'static str> {
option_env!("CARGO_PKG_LICENSE")
}
#[allow(dead_code)]
pub fn license_content() -> Option<&'static str> {
let license = option_env!("LICENSE_CONTENT");
if license.is_none() {
return None;
}
Some(unescape_newlines!(license.unwrap()))
}
#[allow(dead_code)]
pub fn rust_version() -> Option<&'static str> {
option_env!("CARGO_PKG_RUST_VERSION")
}
#[allow(dead_code)]
pub fn readme_path() -> Option<&'static str> {
option_env!("CARGO_PKG_README")
}
#[allow(dead_code)]
pub fn build_target() -> Option<&'static str> {
option_env!("BUILD_TARGET")
}
#[allow(dead_code)]
pub fn build_time_utc() -> Option<u64> {
option_env!("BUILD_TIME_UTC").and_then(|s| s.parse::<u64>().ok())
}
}