mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 84ac80f192
			
		
	
	
		84ac80f192
		
	
	
	
	
		
			
			The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use std::fs::remove_dir_all;
 | |
| use std::path::Path;
 | |
| 
 | |
| use crate::utils::{get_sysroot_dir, remove_file, run_command};
 | |
| 
 | |
| #[derive(Default)]
 | |
| enum CleanArg {
 | |
|     /// `clean all`
 | |
|     All,
 | |
|     /// `clean ui-tests`
 | |
|     UiTests,
 | |
|     /// `clean --help`
 | |
|     #[default]
 | |
|     Help,
 | |
| }
 | |
| 
 | |
| impl CleanArg {
 | |
|     fn new() -> Result<Self, String> {
 | |
|         // We skip the binary and the "clean" option.
 | |
|         for arg in std::env::args().skip(2) {
 | |
|             return match arg.as_str() {
 | |
|                 "all" => Ok(Self::All),
 | |
|                 "ui-tests" => Ok(Self::UiTests),
 | |
|                 "--help" => Ok(Self::Help),
 | |
|                 a => Err(format!("Unknown argument `{}`", a)),
 | |
|             };
 | |
|         }
 | |
|         Ok(Self::default())
 | |
|     }
 | |
| }
 | |
| 
 | |
| fn usage() {
 | |
|     println!(
 | |
|         r#"
 | |
| `clean` command help:
 | |
| 
 | |
|     all                      : Clean all data
 | |
|     ui-tests                 : Clean ui tests
 | |
|     --help                   : Show this help
 | |
| "#
 | |
|     )
 | |
| }
 | |
| 
 | |
| fn clean_all() -> Result<(), String> {
 | |
|     let build_sysroot = get_sysroot_dir();
 | |
|     let dirs_to_remove = [
 | |
|         "target".into(),
 | |
|         build_sysroot.join("sysroot"),
 | |
|         build_sysroot.join("sysroot_src"),
 | |
|         build_sysroot.join("target"),
 | |
|     ];
 | |
|     for dir in dirs_to_remove {
 | |
|         let _ = remove_dir_all(dir);
 | |
|     }
 | |
|     let dirs_to_remove = ["regex", "rand", "simple-raytracer"];
 | |
|     for dir in dirs_to_remove {
 | |
|         let _ = remove_dir_all(Path::new(crate::BUILD_DIR).join(dir));
 | |
|     }
 | |
| 
 | |
|     let files_to_remove =
 | |
|         [build_sysroot.join("Cargo.lock"), "perf.data".into(), "perf.data.old".into()];
 | |
| 
 | |
|     for file in files_to_remove {
 | |
|         let _ = remove_file(&file);
 | |
|     }
 | |
| 
 | |
|     println!("Successfully ran `clean all`");
 | |
|     Ok(())
 | |
| }
 | |
| 
 | |
| fn clean_ui_tests() -> Result<(), String> {
 | |
|     let path = Path::new(crate::BUILD_DIR).join("rust/build/x86_64-unknown-linux-gnu/test/ui/");
 | |
|     run_command(&[&"find", &path, &"-name", &"stamp", &"-delete"], None)?;
 | |
|     Ok(())
 | |
| }
 | |
| 
 | |
| pub fn run() -> Result<(), String> {
 | |
|     match CleanArg::new()? {
 | |
|         CleanArg::All => clean_all()?,
 | |
|         CleanArg::UiTests => clean_ui_tests()?,
 | |
|         CleanArg::Help => usage(),
 | |
|     }
 | |
|     Ok(())
 | |
| }
 |