@@ -4,13 +4,14 @@ mod process;
4
4
5
5
use colored:: * ;
6
6
use constants:: Message ;
7
- use ds:: key_node:: KeyNode ;
8
- use ds:: mismatch:: Mismatch ;
7
+ use ds:: { key_node:: KeyNode , mismatch:: Mismatch } ;
9
8
use 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
+ } ;
14
15
use structopt:: StructOpt ;
15
16
16
17
const HELP : & str = r#"
@@ -88,28 +89,31 @@ fn display_output(result: Mismatch) {
88
89
right_only_keys : KeyNode :: Nil ,
89
90
keys_in_both : KeyNode :: Nil ,
90
91
} ;
92
+
93
+ let stdout = io:: stdout ( ) ;
94
+ let mut handle = io:: BufWriter :: new ( stdout. lock ( ) ) ;
91
95
if no_mismatch == result {
92
- println ! ( "{}" , Message :: NoMismatch ) ;
96
+ writeln ! ( handle , "{}" , Message :: NoMismatch ) . unwrap ( ) ;
93
97
} else {
94
98
match result. keys_in_both {
95
99
KeyNode :: Node ( _) => {
96
100
let mut keys = Vec :: new ( ) ;
97
101
result. keys_in_both . absolute_keys ( & mut keys, None ) ;
98
- println ! ( "{}:" , Message :: Mismatch ) ;
102
+ writeln ! ( handle , "{}:" , Message :: Mismatch ) . unwrap ( ) ;
99
103
for key in keys {
100
- println ! ( "{}" , key) ;
104
+ writeln ! ( handle , "{}" , key) . unwrap ( ) ;
101
105
}
102
106
}
103
- KeyNode :: Value ( _, _) => println ! ( "{}" , Message :: RootMismatch ) ,
107
+ KeyNode :: Value ( _, _) => writeln ! ( handle , "{}" , Message :: RootMismatch ) . unwrap ( ) ,
104
108
KeyNode :: Nil => ( ) ,
105
109
}
106
110
match result. left_only_keys {
107
111
KeyNode :: Node ( _) => {
108
112
let mut keys = Vec :: new ( ) ;
109
113
result. left_only_keys . absolute_keys ( & mut keys, None ) ;
110
- println ! ( "{}:" , Message :: LeftExtra ) ;
114
+ writeln ! ( handle , "{}:" , Message :: LeftExtra ) . unwrap ( ) ;
111
115
for key in keys {
112
- println ! ( "{}" , key. red( ) . bold( ) ) ;
116
+ writeln ! ( handle , "{}" , key. red( ) . bold( ) ) . unwrap ( ) ;
113
117
}
114
118
}
115
119
KeyNode :: Value ( _, _) => error_exit ( Message :: UnknownError ) ,
@@ -119,9 +123,9 @@ fn display_output(result: Mismatch) {
119
123
KeyNode :: Node ( _) => {
120
124
let mut keys = Vec :: new ( ) ;
121
125
result. right_only_keys . absolute_keys ( & mut keys, None ) ;
122
- println ! ( "{}:" , Message :: RightExtra ) ;
126
+ writeln ! ( handle , "{}:" , Message :: RightExtra ) . unwrap ( ) ;
123
127
for key in keys {
124
- println ! ( "{}" , key. green( ) . bold( ) ) ;
128
+ writeln ! ( handle , "{}" , key. green( ) . bold( ) ) . unwrap ( ) ;
125
129
}
126
130
}
127
131
KeyNode :: Value ( _, _) => error_exit ( Message :: UnknownError ) ,
0 commit comments