@@ -4,13 +4,14 @@ mod process;
44
55use colored:: * ;
66use constants:: Message ;
7- use ds:: key_node:: KeyNode ;
8- use ds:: mismatch:: Mismatch ;
7+ use ds:: { key_node:: KeyNode , mismatch:: Mismatch } ;
98use serde_json;
10- use std:: fmt;
11- use std:: fs;
12- use std:: process as proc;
13- use std:: str:: FromStr ;
9+ use std:: {
10+ fmt, fs,
11+ io:: { self , Write } ,
12+ process as proc,
13+ str:: FromStr ,
14+ } ;
1415use structopt:: StructOpt ;
1516
1617const HELP : & str = r#"
@@ -88,28 +89,31 @@ fn display_output(result: Mismatch) {
8889 right_only_keys : KeyNode :: Nil ,
8990 keys_in_both : KeyNode :: Nil ,
9091 } ;
92+
93+ let stdout = io:: stdout ( ) ;
94+ let mut handle = io:: BufWriter :: new ( stdout. lock ( ) ) ;
9195 if no_mismatch == result {
92- println ! ( "{}" , Message :: NoMismatch ) ;
96+ writeln ! ( handle , "{}" , Message :: NoMismatch ) . unwrap ( ) ;
9397 } else {
9498 match result. keys_in_both {
9599 KeyNode :: Node ( _) => {
96100 let mut keys = Vec :: new ( ) ;
97101 result. keys_in_both . absolute_keys ( & mut keys, None ) ;
98- println ! ( "{}:" , Message :: Mismatch ) ;
102+ writeln ! ( handle , "{}:" , Message :: Mismatch ) . unwrap ( ) ;
99103 for key in keys {
100- println ! ( "{}" , key) ;
104+ writeln ! ( handle , "{}" , key) . unwrap ( ) ;
101105 }
102106 }
103- KeyNode :: Value ( _, _) => println ! ( "{}" , Message :: RootMismatch ) ,
107+ KeyNode :: Value ( _, _) => writeln ! ( handle , "{}" , Message :: RootMismatch ) . unwrap ( ) ,
104108 KeyNode :: Nil => ( ) ,
105109 }
106110 match result. left_only_keys {
107111 KeyNode :: Node ( _) => {
108112 let mut keys = Vec :: new ( ) ;
109113 result. left_only_keys . absolute_keys ( & mut keys, None ) ;
110- println ! ( "{}:" , Message :: LeftExtra ) ;
114+ writeln ! ( handle , "{}:" , Message :: LeftExtra ) . unwrap ( ) ;
111115 for key in keys {
112- println ! ( "{}" , key. red( ) . bold( ) ) ;
116+ writeln ! ( handle , "{}" , key. red( ) . bold( ) ) . unwrap ( ) ;
113117 }
114118 }
115119 KeyNode :: Value ( _, _) => error_exit ( Message :: UnknownError ) ,
@@ -119,9 +123,9 @@ fn display_output(result: Mismatch) {
119123 KeyNode :: Node ( _) => {
120124 let mut keys = Vec :: new ( ) ;
121125 result. right_only_keys . absolute_keys ( & mut keys, None ) ;
122- println ! ( "{}:" , Message :: RightExtra ) ;
126+ writeln ! ( handle , "{}:" , Message :: RightExtra ) . unwrap ( ) ;
123127 for key in keys {
124- println ! ( "{}" , key. green( ) . bold( ) ) ;
128+ writeln ! ( handle , "{}" , key. green( ) . bold( ) ) . unwrap ( ) ;
125129 }
126130 }
127131 KeyNode :: Value ( _, _) => error_exit ( Message :: UnknownError ) ,
0 commit comments