use std::env;
use std::fs;
use std::path::PathBuf;
fn main() {
if env::var("CARGO_INSTALL_ROOT").is_ok() {
install_control_script();
}
println!("cargo:rerun-if-changed=scripts/bevy-debugger-control");
}
fn install_control_script() {
let install_root = match env::var("CARGO_INSTALL_ROOT") {
Ok(root) => PathBuf::from(root),
Err(_) => {
let home = env::var("HOME").unwrap_or_else(|_| ".".to_string());
PathBuf::from(home).join(".cargo")
}
};
let bin_dir = install_root.join("bin");
let script_dest = bin_dir.join("bevy-debugger-control");
let script_src = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap())
.join("scripts")
.join("bevy-debugger-control");
if script_src.exists() {
match fs::read_to_string(&script_src) {
Ok(content) => {
if let Err(e) = fs::write(&script_dest, content) {
eprintln!("Warning: Failed to install control script: {}", e);
return;
}
#[cfg(unix)]
{
use std::os::unix::fs::PermissionsExt;
if let Ok(metadata) = fs::metadata(&script_dest) {
let mut permissions = metadata.permissions();
permissions.set_mode(0o755);
let _ = fs::set_permissions(&script_dest, permissions);
}
}
println!("cargo:warning=Installed bevy-debugger-control script to {:?}", script_dest);
}
Err(e) => {
eprintln!("Warning: Failed to read control script: {}", e);
}
}
}
}