use std::path::{Path, PathBuf};
use std::process::exit;
use colored::Colorize;
pub fn workspace_dir() -> PathBuf {
let output = std::process::Command::new(env!("CARGO"))
.arg("locate-project")
.arg("--workspace")
.arg("--message-format=plain")
.output()
.unwrap()
.stdout;
let cargo_path = Path::new(std::str::from_utf8(&output).unwrap().trim());
cargo_path.parent().unwrap().to_path_buf()
}
pub fn cargo(cmd: String) {
println!("{} cargo {}", "[cargo]".bold().cyan(), cmd);
let mut output = std::process::Command::new(env!("CARGO"));
for command in cmd.split(" ") {
output.arg(command);
}
let output = output.spawn().unwrap().wait().unwrap();
if !output.success() {
println!("{}", "============ TASK FAILED".bold().red());
exit(1);
}
}