Skip to main content

cargo_apple_runner/
cargo.rs

1use tracing::warn;
2
3pub struct CargoEnv {
4    pub pkg_name: String,
5    pub pkg_description: String,
6    pub pkg_version: String,
7}
8
9impl CargoEnv {
10    /// Read from current environment.
11    pub fn read() -> Self {
12        let pkg_name = std::env::var("CARGO_PKG_NAME").unwrap_or_else(|err| {
13            warn!(%err, "failed reading CARGO_PKG_NAME");
14            "unknown".into()
15        });
16        let pkg_description = std::env::var("CARGO_PKG_DESCRIPTION").unwrap_or_else(|err| {
17            warn!(%err, "failed reading CARGO_PKG_DESCRIPTION");
18            "".into()
19        });
20        let pkg_version = std::env::var("CARGO_PKG_VERSION").unwrap_or_else(|err| {
21            warn!(%err, "failed reading CARGO_PKG_VERSION");
22            "1.0".into()
23        });
24
25        // NOTE: We don't parse the manifest from `CARGO_MANIFEST_PATH`,
26        // partly because it's hard to know for sure whether `my_bin-deadbeef`
27        // matches a test or a benchmark with the same name.
28
29        Self {
30            pkg_name,
31            pkg_description,
32            pkg_version,
33        }
34    }
35}