devela/build/
environment.rs

1// devela build::utils
2//
3//! Build script environment variables.
4//
5
6// use std::{env, process::Command}; // WIP
7
8pub(crate) fn main() -> Result<(), std::io::Error> {
9    let cargo_primary_package = option_env!("CARGO_PRIMARY_PACKAGE");
10    if cargo_primary_package.is_some() {
11        println!("cargo:rustc-cfg=cargo_primary_package");
12    }
13
14    #[cfg(feature = "__dbg")]
15    {
16        use super::utils::{println, println_heading, println_var, println_var_encoded};
17
18        // https://doc.rust-lang.org/cargo/reference/environment-variables.html
19        println_heading("Environment variables:");
20
21        if let Some(v) = cargo_primary_package {
22            println(&format!["· CARGO_PRIMARY_PACKAGE={v}"]);
23        } else {
24            println("x CARGO_PRIMARY_PACKAGE");
25        }
26
27        println_var("CARGO_MANIFEST_DIR");
28        println_var("CARGO_MANIFEST_PATH");
29        println_var("OUT_DIR");
30
31        println_var("HOST");
32        println_var("TARGET");
33        println_var("PROFILE");
34        println_var("NUM_JOBS");
35
36        println_var("RUSTC");
37        // println_var("RUSTC_WRAPPER");
38        // println_var("RUSTC_LINKER");
39        // println_var("RUSTDOC");
40        // println_var("CARGO");
41        // println_var("CARGO_MAKEFLAGS");
42        // println_var("CARGO_ENCODED_RUSTFLAGS");
43
44        // for (key, value) in std::env::vars() {
45        //     super::utils::println(&format![">> {key}: {value}"]);
46        // }
47
48        println_var_encoded("CARGO_ENCODED_RUSTFLAGS", "RUSTFLAGS");
49        println_var("RUSTDOCFLAGS");
50    }
51
52    Ok(())
53}
54
55// WIP
56// pub fn run_cargo_tree_with_features() {
57//     let features = ENABLED_FEATURES.get().expect("ENABLED_FEATURES not initialized");
58//
59//     if features.is_empty() {
60//         println!("No features enabled. Running cargo tree without features...");
61//         Command::new("cargo")
62//             .args(["tree", "--format", "PACKAGE:{p} FEATURES:{f}"])
63//             .status()
64//             .expect("Failed to execute cargo tree");
65//         return;
66//     }
67//
68//     let feature_list: String = features
69//         .iter()
70//         .map(|s| s.as_str()) // Convert StaticStr<24> to &str
71//         .collect::<Vec<_>>() // Collect into Vec<&str>
72//         .join(","); // Join as comma-separated list
73//
74//     println!("Running cargo tree with features: {}", feature_list);
75//
76//     Command::new("cargo")
77//         .args(["tree", "--format", "PACKAGE:{p} FEATURES:{f}", "--features", &feature_list])
78//         .status()
79//         .expect("Failed to execute cargo tree");
80// }