89 lines
2 KiB
Rust
89 lines
2 KiB
Rust
use std::env;
|
|
use std::process;
|
|
|
|
mod build;
|
|
mod cargo;
|
|
mod clean;
|
|
mod clone_gcc;
|
|
mod config;
|
|
mod info;
|
|
mod prepare;
|
|
mod rustc_info;
|
|
mod test;
|
|
mod utils;
|
|
|
|
const BUILD_DIR: &str = "build";
|
|
|
|
macro_rules! arg_error {
|
|
($($err:tt)*) => {{
|
|
eprintln!($($err)*);
|
|
eprintln!();
|
|
usage();
|
|
std::process::exit(1);
|
|
}};
|
|
}
|
|
|
|
fn usage() {
|
|
println!(
|
|
"\
|
|
Available commands for build_system:
|
|
|
|
cargo : Run cargo command
|
|
clean : Run clean command
|
|
prepare : Run prepare command
|
|
build : Run build command
|
|
test : Run test command
|
|
info : Run info command
|
|
clone-gcc : Run clone-gcc command
|
|
--help : Show this message"
|
|
);
|
|
}
|
|
|
|
pub enum Command {
|
|
Cargo,
|
|
Clean,
|
|
CloneGcc,
|
|
Prepare,
|
|
Build,
|
|
Test,
|
|
Info,
|
|
}
|
|
|
|
fn main() {
|
|
if env::var("RUST_BACKTRACE").is_err() {
|
|
env::set_var("RUST_BACKTRACE", "1");
|
|
}
|
|
|
|
let command = match env::args().nth(1).as_deref() {
|
|
Some("cargo") => Command::Cargo,
|
|
Some("clean") => Command::Clean,
|
|
Some("prepare") => Command::Prepare,
|
|
Some("build") => Command::Build,
|
|
Some("test") => Command::Test,
|
|
Some("info") => Command::Info,
|
|
Some("clone-gcc") => Command::CloneGcc,
|
|
Some("--help") => {
|
|
usage();
|
|
process::exit(0);
|
|
}
|
|
Some(flag) if flag.starts_with('-') => arg_error!("Expected command found flag {}", flag),
|
|
Some(command) => arg_error!("Unknown command {}", command),
|
|
None => {
|
|
usage();
|
|
process::exit(0);
|
|
}
|
|
};
|
|
|
|
if let Err(e) = match command {
|
|
Command::Cargo => cargo::run(),
|
|
Command::Clean => clean::run(),
|
|
Command::Prepare => prepare::run(),
|
|
Command::Build => build::run(),
|
|
Command::Test => test::run(),
|
|
Command::Info => info::run(),
|
|
Command::CloneGcc => clone_gcc::run(),
|
|
} {
|
|
eprintln!("Command failed to run: {e}");
|
|
process::exit(1);
|
|
}
|
|
}
|