use build_deps::rerun_if_changed_paths;
use fs_extra::{copy_items, dir::CopyOptions};
use std::{
env::var,
fs::{copy, create_dir_all},
path::Path,
process::Command,
};
fn main() {
if var("RUSTC_WORKSPACE_WRAPPER").is_ok() {
return;
}
let cargo = var("CARGO").unwrap();
let out_dir = var("OUT_DIR").unwrap();
let build_dir = Path::new(&out_dir).join("sand");
create_dir_all(&build_dir).unwrap();
rerun_if_changed_paths("sand/sand-Cargo.toml").unwrap();
rerun_if_changed_paths("sand/sand-Cargo.lock").unwrap();
rerun_if_changed_paths("sand/src/**/*.rs").unwrap();
let mut opts = CopyOptions::new();
opts.copy_inside = true;
opts.skip_exist = true;
copy("sand/sand-Cargo.toml", build_dir.join("Cargo.toml")).unwrap();
copy("sand/sand-Cargo.lock", build_dir.join("Cargo.lock")).unwrap();
copy_items(&["sand/src"], &build_dir, &opts).unwrap();
let args = &["build", "--release"];
let result = Command::new("cargo")
.current_dir(&build_dir)
.arg("+nightly")
.args(args)
.status();
if result.is_ok() {
assert!(result.unwrap().success());
return;
}
assert!(Command::new(cargo)
.current_dir(&build_dir)
.args(args)
.status()
.unwrap()
.success());
}