cli_batteries/
version.rs

1#[derive(Clone, Debug)]
2pub struct Version {
3    pub pkg_name:     &'static str,
4    pub pkg_version:  &'static str,
5    pub pkg_repo:     &'static str,
6    pub crate_name:   &'static str,
7    pub commit_hash:  &'static str,
8    pub long_version: &'static str,
9    pub target:       &'static str,
10    pub app_crates:   Vec<String>,
11}
12
13#[macro_export]
14macro_rules! version {
15    ($($c:ident),* ) => {
16        $crate::Version {
17            pkg_name:     env!("CARGO_PKG_NAME"),
18            pkg_version:  env!("CARGO_PKG_VERSION"),
19            pkg_repo:     env!("CARGO_PKG_REPOSITORY"),
20            crate_name:   env!("CARGO_CRATE_NAME"),
21            commit_hash:  env!("COMMIT_SHA"),
22            target:       env!("TARGET"),
23            long_version: concat!(
24                env!("CARGO_PKG_VERSION"),
25                "\n",
26                env!("COMMIT_SHA"),
27                " ",
28                env!("COMMIT_DATE"),
29                "\n",
30                env!("TARGET"),
31                " ",
32                env!("BUILD_DATE"),
33                "\n",
34                env!("CARGO_PKG_AUTHORS"),
35                "\n",
36                env!("CARGO_PKG_HOMEPAGE"),
37                "\n",
38                env!("CARGO_PKG_DESCRIPTION"),
39            ),
40            app_crates:   vec![
41                env!("CARGO_PKG_NAME").replace('-', "_"),
42                env!("CARGO_CRATE_NAME").replace('-', "_"),
43                "cli_batteries".to_owned(),
44                $(
45                    stringify!($c).to_string(),
46                )*
47            ],
48        }
49    };
50}