mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 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);
 | |
|     }
 | |
| }
 | 
