@@ -15,6 +15,15 @@ use std::iter;
15
15
use std:: path:: Path ;
16
16
use std:: process:: { self , Command } ;
17
17
18
+ fn handle_epipe ( res : Result < ( ) > ) -> Result < ( ) > {
19
+ match res {
20
+ Err ( Error ( ErrorKind :: Io ( ref err) , _) ) if err. kind ( ) == std:: io:: ErrorKind :: BrokenPipe => {
21
+ Ok ( ( ) )
22
+ }
23
+ res => res,
24
+ }
25
+ }
26
+
18
27
pub fn main ( ) -> Result < ( ) > {
19
28
crate :: self_update:: cleanup_self_updater ( ) ?;
20
29
@@ -30,8 +39,8 @@ pub fn main() -> Result<()> {
30
39
31
40
match matches. subcommand ( ) {
32
41
( "show" , Some ( c) ) => match c. subcommand ( ) {
33
- ( "active-toolchain" , Some ( _) ) => show_active_toolchain ( cfg) ?,
34
- ( _, _) => show ( cfg) ?,
42
+ ( "active-toolchain" , Some ( _) ) => handle_epipe ( show_active_toolchain ( cfg) ) ?,
43
+ ( _, _) => handle_epipe ( show ( cfg) ) ?,
35
44
} ,
36
45
( "install" , Some ( m) ) => update ( cfg, m) ?,
37
46
( "update" , Some ( m) ) => update ( cfg, m) ?,
@@ -653,11 +662,11 @@ fn show(cfg: &Cfg) -> Result<()> {
653
662
// Print host triple
654
663
{
655
664
let mut t = term2:: stdout ( ) ;
656
- let _ = t. attr ( term2:: Attr :: Bold ) ;
657
- let _ = write ! ( t, "Default host: " ) ;
658
- let _ = t. reset ( ) ;
659
- println ! ( "{}" , cfg. get_default_host_triple( ) ?) ;
660
- println ! ( ) ;
665
+ t. attr ( term2:: Attr :: Bold ) ? ;
666
+ write ! ( t, "Default host: " ) ? ;
667
+ t. reset ( ) ? ;
668
+ writeln ! ( t , "{}" , cfg. get_default_host_triple( ) ?) ? ;
669
+ writeln ! ( t ) ? ;
661
670
}
662
671
663
672
let ref cwd = utils:: current_dir ( ) ?;
@@ -698,80 +707,84 @@ fn show(cfg: &Cfg) -> Result<()> {
698
707
> 1 ;
699
708
700
709
if show_installed_toolchains {
710
+ let mut t = term2:: stdout ( ) ;
701
711
if show_headers {
702
- print_header ( "installed toolchains" )
712
+ print_header ( & mut t , "installed toolchains" ) ? ;
703
713
}
704
714
let default_name = cfg. get_default ( ) ?;
705
- for t in installed_toolchains {
706
- if default_name == t {
707
- println ! ( "{} (default)" , t ) ;
715
+ for it in installed_toolchains {
716
+ if default_name == it {
717
+ writeln ! ( t , "{} (default)" , it ) ? ;
708
718
} else {
709
- println ! ( "{}" , t ) ;
719
+ writeln ! ( t , "{}" , it ) ? ;
710
720
}
711
721
}
712
722
if show_headers {
713
- println ! ( )
723
+ writeln ! ( t ) ?
714
724
} ;
715
725
}
716
726
717
727
if show_active_targets {
728
+ let mut t = term2:: stdout ( ) ;
718
729
if show_headers {
719
- print_header ( "installed targets for active toolchain" ) ;
730
+ print_header ( & mut t , "installed targets for active toolchain" ) ? ;
720
731
}
721
- for t in active_targets {
722
- println ! (
732
+ for at in active_targets {
733
+ writeln ! (
734
+ t,
723
735
"{}" ,
724
- t . component
736
+ at . component
725
737
. target
726
738
. as_ref( )
727
739
. expect( "rust-std should have a target" )
728
- ) ;
740
+ ) ? ;
729
741
}
730
742
if show_headers {
731
- println ! ( )
743
+ writeln ! ( t ) ? ;
732
744
} ;
733
745
}
734
746
735
747
if show_active_toolchain {
748
+ let mut t = term2:: stdout ( ) ;
736
749
if show_headers {
737
- print_header ( "active toolchain" )
750
+ print_header ( & mut t , "active toolchain" ) ? ;
738
751
}
739
752
740
753
match active_toolchain {
741
754
Ok ( atc) => match atc {
742
755
Some ( ( ref toolchain, Some ( ref reason) ) ) => {
743
- println ! ( "{} ({})" , toolchain. name( ) , reason) ;
744
- println ! ( "{}" , common:: rustc_version( toolchain) ) ;
756
+ writeln ! ( t , "{} ({})" , toolchain. name( ) , reason) ? ;
757
+ writeln ! ( t , "{}" , common:: rustc_version( toolchain) ) ? ;
745
758
}
746
759
Some ( ( ref toolchain, None ) ) => {
747
- println ! ( "{} (default)" , toolchain. name( ) ) ;
748
- println ! ( "{}" , common:: rustc_version( toolchain) ) ;
760
+ writeln ! ( t , "{} (default)" , toolchain. name( ) ) ? ;
761
+ writeln ! ( t , "{}" , common:: rustc_version( toolchain) ) ? ;
749
762
}
750
763
None => {
751
- println ! ( "no active toolchain" ) ;
764
+ writeln ! ( t , "no active toolchain" ) ? ;
752
765
}
753
766
} ,
754
767
Err ( err) => {
755
768
if let Some ( cause) = err. source ( ) {
756
- println ! ( "(error: {}, {})" , err, cause) ;
769
+ writeln ! ( t , "(error: {}, {})" , err, cause) ? ;
757
770
} else {
758
- println ! ( "(error: {})" , err) ;
771
+ writeln ! ( t , "(error: {})" , err) ? ;
759
772
}
760
773
}
761
774
}
762
775
763
776
if show_headers {
764
- println ! ( )
765
- } ;
777
+ writeln ! ( t ) ?
778
+ }
766
779
}
767
780
768
- fn print_header ( s : & str ) {
769
- let mut t = term2:: stdout ( ) ;
770
- let _ = t . attr ( term2 :: Attr :: Bold ) ;
771
- let _ = writeln ! ( t, "{}" , s ) ;
772
- let _ = writeln ! ( t, "{}" , iter :: repeat ( "-" ) . take ( s . len ( ) ) . collect :: < String > ( ) ) ;
773
- let _ = writeln ! ( t , "" ) ;
774
- let _ = t . reset ( ) ;
781
+ fn print_header ( t : & mut term2 :: Terminal < std :: io :: Stdout > , s : & str ) -> Result < ( ) > {
782
+ t . attr ( term2:: Attr :: Bold ) ? ;
783
+ writeln ! ( t , "{}" , s ) ? ;
784
+ writeln ! ( t, "{}" , iter :: repeat ( "-" ) . take ( s . len ( ) ) . collect :: < String > ( ) ) ? ;
785
+ writeln ! ( t) ? ;
786
+ t . reset ( ) ? ;
787
+ Ok ( ( ) )
775
788
}
776
789
777
790
Ok ( ( ) )
0 commit comments