1
- use crate :: utils:: remove_file;
1
+ use crate :: utils:: { remove_file, run_command } ;
2
2
3
3
use std:: fs:: remove_dir_all;
4
4
5
5
#[ derive( Default ) ]
6
- struct CleanArg {
7
- all : bool ,
6
+ enum CleanArg {
7
+ /// `clean all`
8
+ All ,
9
+ /// `clean ui-tests`
10
+ UiTests ,
11
+ /// `clean --help`
12
+ #[ default]
13
+ Help ,
8
14
}
9
15
10
16
impl CleanArg {
11
- fn new ( ) -> Result < Option < Self > , String > {
12
- let mut args = CleanArg :: default ( ) ;
13
-
17
+ fn new ( ) -> Result < Self , String > {
14
18
// We skip the binary and the "clean" option.
15
19
for arg in std:: env:: args ( ) . skip ( 2 ) {
16
- match arg. as_str ( ) {
17
- "all" => args. all = true ,
18
- "--help" => {
19
- Self :: usage ( ) ;
20
- return Ok ( None ) ;
21
- }
22
- a => return Err ( format ! ( "Unknown argument `{}`" , a) ) ,
23
- }
20
+ return match arg. as_str ( ) {
21
+ "all" => Ok ( Self :: All ) ,
22
+ "ui-tests" => Ok ( Self :: UiTests ) ,
23
+ "--help" => Ok ( Self :: Help ) ,
24
+ a => Err ( format ! ( "Unknown argument `{}`" , a) ) ,
25
+ } ;
24
26
}
25
- Ok ( Some ( args ) )
27
+ Ok ( Self :: default ( ) )
26
28
}
29
+ }
27
30
28
- fn usage ( ) {
29
- println ! (
30
- r#"
31
- `clean` command help:
31
+ fn usage ( ) {
32
+ println ! (
33
+ r#"
34
+ `clean` command help:
32
35
33
- all : Clean all data
34
- --help : Show this help
35
- "#
36
- )
37
- }
36
+ all : Clean all data
37
+ ui-tests : Clean ui tests
38
+ --help : Show this help
39
+ "#
40
+ )
38
41
}
39
42
40
43
fn clean_all ( ) -> Result < ( ) , String > {
@@ -60,14 +63,25 @@ fn clean_all() -> Result<(), String> {
60
63
Ok ( ( ) )
61
64
}
62
65
63
- pub fn run ( ) -> Result < ( ) , String > {
64
- let args = match CleanArg :: new ( ) ? {
65
- Some ( a) => a,
66
- None => return Ok ( ( ) ) ,
67
- } ;
66
+ fn clean_ui_tests ( ) -> Result < ( ) , String > {
67
+ run_command (
68
+ & [
69
+ & "find" ,
70
+ & "rust/build/x86_64-unknown-linux-gnu/test/ui/" ,
71
+ & "-name" ,
72
+ & "stamp" ,
73
+ & "-delete" ,
74
+ ] ,
75
+ None ,
76
+ ) ?;
77
+ Ok ( ( ) )
78
+ }
68
79
69
- if args. all {
70
- clean_all ( ) ?;
80
+ pub fn run ( ) -> Result < ( ) , String > {
81
+ match CleanArg :: new ( ) ? {
82
+ CleanArg :: All => clean_all ( ) ?,
83
+ CleanArg :: UiTests => clean_ui_tests ( ) ?,
84
+ CleanArg :: Help => usage ( ) ,
71
85
}
72
86
Ok ( ( ) )
73
87
}
0 commit comments