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// }