@@ -182,20 +182,6 @@ impl RustwideBuilder {
182
182
let krate = Crate :: crates_io ( DUMMY_CRATE_NAME , DUMMY_CRATE_VERSION ) ;
183
183
krate. fetch ( & self . workspace ) ?;
184
184
185
- // TODO: remove this when https://github.com/rust-lang/rustwide/pull/53 lands.
186
- struct Rustdoc < ' a > {
187
- toolchain_version : & ' a str ,
188
- }
189
- impl rustwide:: cmd:: Runnable for Rustdoc < ' _ > {
190
- fn name ( & self ) -> Binary {
191
- Binary :: ManagedByRustwide ( PathBuf :: from ( "rustdoc" ) )
192
- }
193
-
194
- fn prepare_command < ' w , ' pl > ( & self , cmd : Command < ' w , ' pl > ) -> Command < ' w , ' pl > {
195
- cmd. args ( & [ format ! ( "+{}" , self . toolchain_version) ] )
196
- }
197
- }
198
-
199
185
build_dir
200
186
. build ( & self . toolchain , & krate, self . prepare_sandbox ( & limits) )
201
187
. run ( |build| {
@@ -212,29 +198,14 @@ impl RustwideBuilder {
212
198
. prefix ( "essential-files" )
213
199
. tempdir ( ) ?;
214
200
215
- let toolchain_version = self . toolchain . as_dist ( ) . unwrap ( ) . name ( ) ;
216
- let output = build. cmd ( Rustdoc { toolchain_version } )
217
- . args ( & [ "-Zunstable-options" , "--print=unversioned-files" ] )
218
- . run_capture ( )
219
- . context ( "failed to learn about unversioned files - make sure you have nightly-2021-03-07 or later" ) ?;
220
- let essential_files_unversioned = output
221
- . stdout_lines ( )
222
- . iter ( )
223
- . map ( PathBuf :: from) ;
224
- let resource_suffix = format ! ( "-{}" , parse_rustc_version( & self . rustc_version) ?) ;
225
- let essential_files_versioned: Vec < _ > = source. read_dir ( ) ?
226
- . collect :: < std:: result:: Result < Vec < _ > , _ > > ( ) ?
227
- . into_iter ( )
228
- . filter_map ( |entry| {
229
- entry. file_name ( ) . to_str ( ) . and_then ( |name| if name. contains ( & resource_suffix) {
230
- Some ( entry. file_name ( ) . into ( ) )
231
- } else { None } )
232
- } )
233
- . collect ( ) ;
234
- for file_name in essential_files_unversioned. chain ( essential_files_versioned) {
201
+ for file_name in self . essential_files ( build, & source) ? {
235
202
let source_path = source. join ( & file_name) ;
236
203
let dest_path = dest. path ( ) . join ( & file_name) ;
237
- debug ! ( "copying {} to {}" , source_path. display( ) , dest_path. display( ) ) ;
204
+ debug ! (
205
+ "copying {} to {}" ,
206
+ source_path. display( ) ,
207
+ dest_path. display( )
208
+ ) ;
238
209
:: std:: fs:: copy ( & source_path, & dest_path) . with_context ( |_| {
239
210
format ! (
240
211
"couldn't copy '{}' to '{}'" ,
@@ -363,7 +334,7 @@ impl RustwideBuilder {
363
334
let mut algs = HashSet :: new ( ) ;
364
335
if has_docs {
365
336
debug ! ( "adding documentation for the default target to the database" ) ;
366
- self . copy_docs ( & build. host_target_dir ( ) , local_storage. path ( ) , "" , true ) ?;
337
+ self . copy_docs ( build, local_storage. path ( ) , "" , true ) ?;
367
338
368
339
successful_targets. push ( res. target . clone ( ) ) ;
369
340
@@ -465,7 +436,7 @@ impl RustwideBuilder {
465
436
// adding target to successfully_targets.
466
437
if build. host_target_dir ( ) . join ( target) . join ( "doc" ) . is_dir ( ) {
467
438
debug ! ( "adding documentation for target {} to the database" , target, ) ;
468
- self . copy_docs ( & build. host_target_dir ( ) , local_storage, target, false ) ?;
439
+ self . copy_docs ( build, local_storage, target, false ) ?;
469
440
successful_targets. push ( target. to_string ( ) ) ;
470
441
}
471
442
}
@@ -638,12 +609,12 @@ impl RustwideBuilder {
638
609
639
610
fn copy_docs (
640
611
& self ,
641
- target_dir : & Path ,
612
+ build : & Build ,
642
613
local_storage : & Path ,
643
614
target : & str ,
644
615
is_default_target : bool ,
645
616
) -> Result < ( ) > {
646
- let source = target_dir . join ( target) . join ( "doc" ) ;
617
+ let source = build . host_target_dir ( ) . join ( target) . join ( "doc" ) ;
647
618
648
619
let mut dest = local_storage. to_path_buf ( ) ;
649
620
// only add target name to destination directory when we are copying a non-default target.
@@ -656,7 +627,49 @@ impl RustwideBuilder {
656
627
}
657
628
658
629
info ! ( "{} {}" , source. display( ) , dest. display( ) ) ;
659
- copy_doc_dir ( source, dest)
630
+ let essential_files = self . essential_files ( build, & source) ?;
631
+ copy_doc_dir ( source, dest, & essential_files)
632
+ }
633
+
634
+ fn essential_files ( & self , build : & Build , doc_dir : & Path ) -> Result < Vec < PathBuf > > {
635
+ // TODO: remove this when https://github.com/rust-lang/rustwide/pull/53 lands.
636
+ struct Rustdoc < ' a > {
637
+ toolchain_version : & ' a str ,
638
+ }
639
+ impl rustwide:: cmd:: Runnable for Rustdoc < ' _ > {
640
+ fn name ( & self ) -> Binary {
641
+ Binary :: ManagedByRustwide ( PathBuf :: from ( "rustdoc" ) )
642
+ }
643
+
644
+ fn prepare_command < ' w , ' pl > ( & self , cmd : Command < ' w , ' pl > ) -> Command < ' w , ' pl > {
645
+ cmd. args ( & [ format ! ( "+{}" , self . toolchain_version) ] )
646
+ }
647
+ }
648
+
649
+ let toolchain_version = self . toolchain . as_dist ( ) . unwrap ( ) . name ( ) ;
650
+ let output = build. cmd ( Rustdoc { toolchain_version } )
651
+ . args ( & [ "-Zunstable-options" , "--print=unversioned-files" ] )
652
+ . run_capture ( )
653
+ . context ( "failed to learn about unversioned files - make sure you have nightly-2021-03-07 or later" ) ?;
654
+ let mut essential_files: Vec < _ > = output. stdout_lines ( ) . iter ( ) . map ( PathBuf :: from) . collect ( ) ;
655
+ let resource_suffix = format ! ( "-{}" , parse_rustc_version( & self . rustc_version) ?) ;
656
+
657
+ let essential_files_versioned = doc_dir
658
+ . read_dir ( ) ?
659
+ . collect :: < std:: result:: Result < Vec < _ > , _ > > ( ) ?
660
+ . into_iter ( )
661
+ . filter_map ( |entry| {
662
+ entry. file_name ( ) . to_str ( ) . and_then ( |name| {
663
+ if name. contains ( & resource_suffix) {
664
+ Some ( entry. file_name ( ) . into ( ) )
665
+ } else {
666
+ None
667
+ }
668
+ } )
669
+ } ) ;
670
+
671
+ essential_files. extend ( essential_files_versioned) ;
672
+ Ok ( essential_files)
660
673
}
661
674
662
675
fn upload_docs (
0 commit comments