@@ -78,7 +78,7 @@ impl fmt::Debug for Shell {
78
78
/// A `Write`able object, either with or without color support
79
79
enum ShellOut {
80
80
/// A plain write object without color support
81
- Write ( Box < dyn Write > ) ,
81
+ Write ( AutoStream < Box < dyn Write > > ) ,
82
82
/// Color-enabled stdio, with information on whether color should be used
83
83
Stream {
84
84
stdout : AutoStream < std:: io:: Stdout > ,
@@ -121,7 +121,7 @@ impl Shell {
121
121
/// Creates a shell from a plain writable object, with no color, and max verbosity.
122
122
pub fn from_write ( out : Box < dyn Write > ) -> Shell {
123
123
Shell {
124
- output : ShellOut :: Write ( out) ,
124
+ output : ShellOut :: Write ( AutoStream :: never ( out) ) , // strip all formatting on write
125
125
verbosity : Verbosity :: Verbose ,
126
126
needs_clear : false ,
127
127
}
@@ -398,72 +398,43 @@ impl ShellOut {
398
398
style : & Style ,
399
399
justified : bool ,
400
400
) -> CargoResult < ( ) > {
401
- match * self {
402
- ShellOut :: Stream { ref mut stderr, .. } => {
403
- let style = style. render ( ) ;
404
- let bold = ( anstyle:: Style :: new ( ) | anstyle:: Effects :: BOLD ) . render ( ) ;
405
- let reset = anstyle:: Reset . render ( ) ;
406
-
407
- let mut buffer = Vec :: new ( ) ;
408
- if justified {
409
- write ! ( & mut buffer, "{style}{status:>12}{reset}" ) ?;
410
- } else {
411
- write ! ( & mut buffer, "{style}{status}{reset}{bold}:{reset}" ) ?;
412
- }
413
- match message {
414
- Some ( message) => writeln ! ( buffer, " {message}" ) ?,
415
- None => write ! ( buffer, " " ) ?,
416
- }
417
- stderr. write_all ( & buffer) ?;
418
- }
419
- ShellOut :: Write ( ref mut w) => {
420
- if justified {
421
- write ! ( w, "{:>12}" , status) ?;
422
- } else {
423
- write ! ( w, "{}:" , status) ?;
424
- }
425
- match message {
426
- Some ( message) => writeln ! ( w, " {}" , message) ?,
427
- None => write ! ( w, " " ) ?,
428
- }
429
- }
401
+ let style = style. render ( ) ;
402
+ let bold = ( anstyle:: Style :: new ( ) | anstyle:: Effects :: BOLD ) . render ( ) ;
403
+ let reset = anstyle:: Reset . render ( ) ;
404
+
405
+ let mut buffer = Vec :: new ( ) ;
406
+ if justified {
407
+ write ! ( & mut buffer, "{style}{status:>12}{reset}" ) ?;
408
+ } else {
409
+ write ! ( & mut buffer, "{style}{status}{reset}{bold}:{reset}" ) ?;
410
+ }
411
+ match message {
412
+ Some ( message) => writeln ! ( buffer, " {message}" ) ?,
413
+ None => write ! ( buffer, " " ) ?,
430
414
}
415
+ self . stderr ( ) . write_all ( & buffer) ?;
431
416
Ok ( ( ) )
432
417
}
433
418
434
419
/// Write a styled fragment
435
420
fn write_stdout ( & mut self , fragment : impl fmt:: Display , style : & Style ) -> CargoResult < ( ) > {
436
- match * self {
437
- ShellOut :: Stream { ref mut stdout, .. } => {
438
- let style = style. render ( ) ;
439
- let reset = anstyle:: Reset . render ( ) ;
421
+ let style = style. render ( ) ;
422
+ let reset = anstyle:: Reset . render ( ) ;
440
423
441
- let mut buffer = Vec :: new ( ) ;
442
- write ! ( buffer, "{style}{}{reset}" , fragment) ?;
443
- stdout. write_all ( & buffer) ?;
444
- }
445
- ShellOut :: Write ( ref mut w) => {
446
- write ! ( w, "{}" , fragment) ?;
447
- }
448
- }
424
+ let mut buffer = Vec :: new ( ) ;
425
+ write ! ( buffer, "{style}{}{reset}" , fragment) ?;
426
+ self . stdout ( ) . write_all ( & buffer) ?;
449
427
Ok ( ( ) )
450
428
}
451
429
452
430
/// Write a styled fragment
453
431
fn write_stderr ( & mut self , fragment : impl fmt:: Display , style : & Style ) -> CargoResult < ( ) > {
454
- match * self {
455
- ShellOut :: Stream { ref mut stderr, .. } => {
456
- let style = style. render ( ) ;
457
- let reset = anstyle:: Reset . render ( ) ;
432
+ let style = style. render ( ) ;
433
+ let reset = anstyle:: Reset . render ( ) ;
458
434
459
- let mut buffer = Vec :: new ( ) ;
460
- write ! ( buffer, "{style}{}{reset}" , fragment) ?;
461
- stderr. write_all ( & buffer) ?;
462
- }
463
- ShellOut :: Write ( ref mut w) => {
464
- write ! ( w, "{}" , fragment) ?;
465
- }
466
- }
435
+ let mut buffer = Vec :: new ( ) ;
436
+ write ! ( buffer, "{style}{}{reset}" , fragment) ?;
437
+ self . stderr ( ) . write_all ( & buffer) ?;
467
438
Ok ( ( ) )
468
439
}
469
440
0 commit comments