#!/usr/bin/env rust-script
extern crate yansi;
use std::process::Command;
macro_rules! run_command {
($cmd:expr) => {
let mut command = command!($cmd);
let mut child = command.spawn().unwrap();
let status = child.wait().unwrap();
if !status.success() {
println!(
"{} in {}",
yansi::Paint::red("qualify terminates due to error"),
yansi::Paint::yellow($cmd)
);
std::process::exit(-1);
}
};
}
macro_rules! command {
($cmd:expr) => {{
print!("\n> {}\n", yansi::Paint::yellow($cmd));
let mut chips = $cmd.split(' ');
let mut command = Command::new(chips.next().unwrap());
for chip in chips {
command.arg(chip);
}
command
}};
}
fn main() {
run_command!("cargo fmt");
run_command!("cargo build");
run_command!("cargo build --release");
run_command!("cargo clippy -- -D warnings");
run_command!("cargo test --release");
run_command!("cargo test");
run_command!("cargo doc --all-features --no-deps --open");
let mut cmd = command!("git status -s");
let child = cmd.stdout(std::process::Stdio::piped()).spawn().unwrap();
let output = child.wait_with_output().unwrap();
if output.stdout.len() > 0 {
print!("> {}", yansi::Paint::red("there are unsubmitted files"));
std::process::exit(-1);
}
println!("\n> all done :-) Looks like you're ready to \"cargo publish\"?");
}