@@ -379,6 +379,58 @@ pub trait ArgMatchesExt {
379
379
self . _values_of ( "target" )
380
380
}
381
381
382
+ fn get_timing_outputs ( & self , config : & Config ) -> CargoResult < Vec < TimingOutput > > {
383
+ let mut timing_outputs = Vec :: new ( ) ;
384
+ // If `--timings' flag exists, override the configured timings value.
385
+ if self . _contains ( "timings" ) {
386
+ for timing_output in self . _values_of ( "timings" ) {
387
+ for timing_output in timing_output. split ( ',' ) {
388
+ let timing_output = timing_output. to_ascii_lowercase ( ) ;
389
+ let timing_output = match timing_output. as_str ( ) {
390
+ "html" => {
391
+ config
392
+ . cli_unstable ( )
393
+ . fail_if_stable_opt ( "--timings=html" , 7405 ) ?;
394
+ TimingOutput :: Html
395
+ }
396
+ "json" => {
397
+ config
398
+ . cli_unstable ( )
399
+ . fail_if_stable_opt ( "--timings=json" , 7405 ) ?;
400
+ TimingOutput :: Json
401
+ }
402
+ s => bail ! ( "invalid timings output specifier: `{}`" , s) ,
403
+ } ;
404
+ timing_outputs. push ( timing_output) ;
405
+ }
406
+ }
407
+ // If there is no timings value, the default value is used.
408
+ if timing_outputs. is_empty ( ) {
409
+ return Ok ( vec ! [ TimingOutput :: Html ] ) ;
410
+ }
411
+ } else {
412
+ let build_config = config. build_config ( ) ?;
413
+ if let Some ( config_timing_outputs) = & build_config. timings {
414
+ for timing_output in config_timing_outputs {
415
+ let timing_output = timing_output. to_ascii_lowercase ( ) ;
416
+ let timing_output = match timing_output. as_str ( ) {
417
+ "html" => TimingOutput :: Html ,
418
+ "json" => {
419
+ config
420
+ . cli_unstable ( )
421
+ . fail_if_stable_opt ( "--timings=json" , 7405 ) ?;
422
+ TimingOutput :: Json
423
+ }
424
+ s => bail ! ( "invalid timings output configuration: `{}`" , s) ,
425
+ } ;
426
+ timing_outputs. push ( timing_output) ;
427
+ }
428
+ }
429
+ }
430
+
431
+ Ok ( timing_outputs)
432
+ }
433
+
382
434
fn get_profile_name (
383
435
& self ,
384
436
config : & Config ,
@@ -532,33 +584,7 @@ pub trait ArgMatchesExt {
532
584
build_config. build_plan = self . flag ( "build-plan" ) ;
533
585
build_config. unit_graph = self . flag ( "unit-graph" ) ;
534
586
build_config. future_incompat_report = self . flag ( "future-incompat-report" ) ;
535
-
536
- if self . _contains ( "timings" ) {
537
- for timing_output in self . _values_of ( "timings" ) {
538
- for timing_output in timing_output. split ( ',' ) {
539
- let timing_output = timing_output. to_ascii_lowercase ( ) ;
540
- let timing_output = match timing_output. as_str ( ) {
541
- "html" => {
542
- config
543
- . cli_unstable ( )
544
- . fail_if_stable_opt ( "--timings=html" , 7405 ) ?;
545
- TimingOutput :: Html
546
- }
547
- "json" => {
548
- config
549
- . cli_unstable ( )
550
- . fail_if_stable_opt ( "--timings=json" , 7405 ) ?;
551
- TimingOutput :: Json
552
- }
553
- s => bail ! ( "invalid timings output specifier: `{}`" , s) ,
554
- } ;
555
- build_config. timing_outputs . push ( timing_output) ;
556
- }
557
- }
558
- if build_config. timing_outputs . is_empty ( ) {
559
- build_config. timing_outputs . push ( TimingOutput :: Html ) ;
560
- }
561
- }
587
+ build_config. timing_outputs = self . get_timing_outputs ( config) ?;
562
588
563
589
if build_config. keep_going {
564
590
config
0 commit comments