diff --git a/build.rs b/build.rs new file mode 100644 index 00000000..ce7cf02d --- /dev/null +++ b/build.rs @@ -0,0 +1,34 @@ +// +// imag - the personal information management suite for the commandline +// Copyright (C) 2015-2018 the imag contributors +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; version +// 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// + +use std::process::Command; +fn main() { + let profile = String::from(std::env::var("PROFILE").unwrap()); + let git_hash = if profile == "debug" { + let output = Command::new("git") + .args(&["rev-parse", "--short=10", "HEAD"]) + .output() + .unwrap(); + String::from_utf8(output.stdout).unwrap() + } else { + String::from("") + }; + + println!("cargo:rustc-env=CARGO_BUILD_GIT_HASH={}", git_hash); +} diff --git a/lib/core/libimagrt/src/lib.rs b/lib/core/libimagrt/src/lib.rs index b7336ab4..b6c6e735 100644 --- a/lib/core/libimagrt/src/lib.rs +++ b/lib/core/libimagrt/src/lib.rs @@ -59,4 +59,5 @@ pub mod logger; pub mod runtime; pub mod setup; pub mod spec; +pub mod version; diff --git a/lib/core/libimagrt/src/version.rs b/lib/core/libimagrt/src/version.rs new file mode 100644 index 00000000..3f6d0ff3 --- /dev/null +++ b/lib/core/libimagrt/src/version.rs @@ -0,0 +1,32 @@ +// +// imag - the personal information management suite for the commandline +// Copyright (C) 2015-2018 Matthias Beyer and contributors +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; version +// 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// + +#[macro_export] +macro_rules! make_imag_version { + () => {{ + let pkg_version = env!("CARGO_PKG_VERSION"); + let git_version = env!("CARGO_BUILD_GIT_HASH"); + + if git_version == "" { + String::from(pkg_version) + } else { + format!("{}-{}", pkg_version, git_version) + } + }} +}