@@ -8,7 +8,7 @@ use std::path::Path;
88enum PrinterMode {
99 Silent ,
1010 NoColor ,
11- Color ,
11+ Color { diff : bool } ,
1212}
1313
1414pub struct Printer {
@@ -28,7 +28,7 @@ pub struct Colors {
2828
2929impl Printer {
3030 /// Return a printer configured to colorize output
31- pub fn color ( ) -> Printer {
31+ pub fn color ( diff : bool ) -> Printer {
3232 let colors = Colors {
3333 info : Style :: default ( ) . bold ( ) ,
3434 warn : Style :: from ( Yellow ) ,
@@ -40,7 +40,7 @@ impl Printer {
4040
4141 Printer {
4242 colors,
43- mode : PrinterMode :: Color ,
43+ mode : PrinterMode :: Color { diff } ,
4444 }
4545 }
4646
@@ -81,7 +81,7 @@ impl Printer {
8181 /// Print string to Stdout when printer is not in silent mode
8282 pub fn print ( & self , message : & str ) {
8383 match self . mode {
84- PrinterMode :: Color | PrinterMode :: NoColor => {
84+ PrinterMode :: Color { diff : _ } | PrinterMode :: NoColor => {
8585 println ! ( "{}" , message) ;
8686 }
8787 PrinterMode :: Silent => { }
@@ -91,7 +91,7 @@ impl Printer {
9191 /// Print string to Stderr when printer is not in silent mode
9292 pub fn eprint ( & self , message : & str ) {
9393 match self . mode {
94- PrinterMode :: Color | PrinterMode :: NoColor => {
94+ PrinterMode :: Color { diff : _ } | PrinterMode :: NoColor => {
9595 eprintln ! ( "{}" , message) ;
9696 }
9797 PrinterMode :: Silent => { }
@@ -122,14 +122,20 @@ impl Printer {
122122 let mut target_parent = target. parent ( ) . unwrap ( ) . to_string_lossy ( ) . to_string ( ) ;
123123 let mut target_name = target. file_name ( ) . unwrap ( ) . to_string_lossy ( ) . to_string ( ) ;
124124
125- // Avoid diffing if not coloring output
126- if self . mode == PrinterMode :: Color {
127- target_name = self . string_diff (
128- & source_name,
129- & target_name,
130- self . colors . target ,
131- self . colors . highlight ,
132- )
125+ // Avoid diffing if not coloring output or disabled
126+ match self . mode {
127+ PrinterMode :: Color { diff : true } => {
128+ target_name = self . string_diff (
129+ & source_name,
130+ & target_name,
131+ self . colors . target ,
132+ self . colors . highlight ,
133+ )
134+ }
135+ PrinterMode :: Color { diff : false } => {
136+ target_name = self . colors . target . paint ( & target_name) . to_string ( ) ;
137+ }
138+ _ => { }
133139 }
134140
135141 source_name = self . colors . source . paint ( & source_name) . to_string ( ) ;
0 commit comments