@@ -17,7 +17,7 @@ struct Krate {
17
17
}
18
18
19
19
impl KrateSource {
20
- fn new ( version : & str , name : & str ) -> Self {
20
+ fn new ( name : & str , version : & str ) -> Self {
21
21
KrateSource {
22
22
version : version. into ( ) ,
23
23
name : name. into ( ) ,
@@ -33,19 +33,24 @@ impl KrateSource {
33
33
"https://crates.io/api/v1/crates/{}/{}/download" ,
34
34
self . name, self . version
35
35
) ;
36
- print ! ( "Downloading {}, {}" , self . name, self . version) ;
36
+ println ! ( "Downloading {}, {} / {}" , self . name, self . version, url) ;
37
+ std:: fs:: create_dir ( "target/crater/" ) . unwrap ( ) ;
37
38
38
- let krate_name = format ! ( "{}-{}.crate" , & self . name, & self . version) ;
39
+ std:: fs:: create_dir ( & krate_download_dir) . unwrap ( ) ;
40
+ std:: fs:: create_dir ( & extract_dir) . unwrap ( ) ;
41
+
42
+ let krate_name = format ! ( "{}-{}.crate.tar.gz" , & self . name, & self . version) ;
39
43
let mut krate_dest = std:: fs:: File :: create ( krate_download_dir. join ( krate_name) ) . unwrap ( ) ;
40
44
let mut krate_req = ureq:: get ( & url) . call ( ) . unwrap ( ) . into_reader ( ) ;
41
45
std:: io:: copy ( & mut krate_req, & mut krate_dest) . unwrap ( ) ;
42
-
43
- // extract
44
46
let krate = krate_dest;
45
- let tar = flate2:: read:: GzDecoder :: new ( krate) ;
47
+ dbg ! ( & krate) ;
48
+ let tar = flate2:: read:: GzDecoder :: new ( & krate) ;
46
49
let mut archiv = tar:: Archive :: new ( tar) ;
47
- let extracted_path = extract_dir. join ( format ! ( "{}-{}/" , self . name, self . version) ) ;
50
+ let extracted_path = extract_dir. join ( format ! ( "{}-{}" , self . name, self . version) ) ;
51
+ // println!("ar: p: {:?}", &krate, extracted_path);
48
52
archiv. unpack ( & extracted_path) . expect ( "Failed to extract!" ) ;
53
+ // extract
49
54
50
55
Krate {
51
56
version : self . version . clone ( ) ,
@@ -71,20 +76,23 @@ fn build_clippy() {
71
76
// the main fn
72
77
pub fn run ( ) {
73
78
let cargo_clippy_path: PathBuf = PathBuf :: from ( "target/debug/cargo-clippy" ) ;
74
- let clippy_driver_path: PathBuf = PathBuf :: from ( "target/debug/cargo -driver" ) ;
79
+ let clippy_driver_path: PathBuf = PathBuf :: from ( "target/debug/clippy -driver" ) ;
75
80
76
81
// crates we want to check:
77
82
let krates: Vec < KrateSource > = vec ! [ KrateSource :: new( "cargo" , "0.49.0" ) , KrateSource :: new( "regex" , "1.4.2" ) ] ;
78
83
84
+ println ! ( "Compiling clippy..." ) ;
79
85
build_clippy ( ) ;
86
+ println ! ( "Done compiling" ) ;
87
+
80
88
// assert that clippy is found
81
89
assert ! (
82
90
cargo_clippy_path. is_file( ) ,
83
- "target/debug/cargo-clippy binary not found!"
91
+ "target/debug/cargo-clippy binary not found! {}" , cargo_clippy_path . display ( )
84
92
) ;
85
93
assert ! (
86
94
clippy_driver_path. is_file( ) ,
87
- "target/debug/clippy-driver binary not found!"
95
+ "target/debug/clippy-driver binary not found! {}" , clippy_driver_path . display ( )
88
96
) ;
89
97
90
98
// download and extract the crates, then run clippy on them and collect clippys warnings
0 commit comments