@@ -12,16 +12,28 @@ use std::{
12
12
use cargo_metadata:: Message ;
13
13
14
14
fn main ( ) {
15
+ println ! ( "cargo:rerun-if-changed=imp" ) ;
16
+
15
17
let out_dir = env:: var_os ( "OUT_DIR" ) . unwrap ( ) ;
16
18
let out_dir = Path :: new ( & out_dir) ;
17
19
18
20
let name = "proc-macro-test-impl" ;
19
21
let version = "0.0.0" ;
20
22
21
23
let imp_dir = std:: env:: current_dir ( ) . unwrap ( ) . join ( "imp" ) ;
22
- let staging_dir = out_dir. join ( "staging" ) ;
24
+
25
+ let staging_dir = out_dir. join ( "proc-macro-test-imp-staging" ) ;
26
+ // this'll error out if the staging dir didn't previously. using
27
+ // `std::fs::exists` would suffer from TOCTOU so just do our best to
28
+ // wip it and ignore errors.
29
+ let _ = std:: fs:: remove_dir_all ( & staging_dir) ;
30
+
31
+ println ! ( "Creating {}" , staging_dir. display( ) ) ;
23
32
std:: fs:: create_dir_all ( & staging_dir) . unwrap ( ) ;
24
- std:: fs:: create_dir_all ( staging_dir. join ( "src" ) ) . unwrap ( ) ;
33
+
34
+ let src_dir = staging_dir. join ( "src" ) ;
35
+ println ! ( "Creating {}" , src_dir. display( ) ) ;
36
+ std:: fs:: create_dir_all ( src_dir) . unwrap ( ) ;
25
37
26
38
for item_els in [ & [ "Cargo.toml" ] [ ..] , & [ "Cargo.lock" ] , & [ "src" , "lib.rs" ] ] {
27
39
let mut src = imp_dir. clone ( ) ;
@@ -30,6 +42,7 @@ fn main() {
30
42
src. push ( el) ;
31
43
dst. push ( el) ;
32
44
}
45
+ println ! ( "Copying {} to {}" , src. display( ) , dst. display( ) ) ;
33
46
std:: fs:: copy ( src, dst) . unwrap ( ) ;
34
47
}
35
48
0 commit comments