@@ -2,14 +2,14 @@ extern crate failure;
2
2
extern crate rustfix;
3
3
4
4
use failure:: Error ;
5
- use std:: { env, fs, process, collections :: HashSet } ;
5
+ use std:: { collections :: HashMap , collections :: HashSet , env, fs, process} ;
6
6
7
7
fn main ( ) -> Result < ( ) , Error > {
8
8
let args: Vec < String > = env:: args ( ) . collect ( ) ;
9
- let ( suggestions_file, source_file ) = match args. as_slice ( ) {
10
- [ _, suggestions_file, source_file ] => ( suggestions_file, source_file ) ,
9
+ let suggestions_file = match args. as_slice ( ) {
10
+ [ _, suggestions_file] => suggestions_file,
11
11
_ => {
12
- println ! ( "USAGE: fix-json <suggestions-file> <source-file> " ) ;
12
+ println ! ( "USAGE: fix-json <suggestions-file>" ) ;
13
13
process:: exit ( 1 ) ;
14
14
}
15
15
} ;
@@ -21,11 +21,21 @@ fn main() -> Result<(), Error> {
21
21
rustfix:: Filter :: Everything ,
22
22
) ?;
23
23
24
- let source = fs:: read_to_string ( & source_file) ?;
24
+ let mut files = HashMap :: new ( ) ;
25
+ for suggestion in suggestions {
26
+ let file = suggestion. solutions [ 0 ] . replacements [ 0 ]
27
+ . snippet
28
+ . file_name
29
+ . clone ( ) ;
30
+ let entry = files. entry ( file) . or_insert ( Vec :: new ( ) ) ;
31
+ entry. push ( suggestion) ;
32
+ }
25
33
26
- let fixes = rustfix:: apply_suggestions ( & source, & suggestions) ?;
27
-
28
- println ! ( "{}" , fixes) ;
34
+ for ( source_file, suggestions) in & files {
35
+ let source = fs:: read_to_string ( & source_file) ?;
36
+ let fixes = rustfix:: apply_suggestions ( & source, suggestions) ?;
37
+ fs:: write ( & source_file, fixes) ?;
38
+ }
29
39
30
40
Ok ( ( ) )
31
41
}
0 commit comments