6
6
package main
7
7
8
8
import (
9
+ "bytes"
9
10
"context"
10
11
"encoding/json"
11
12
"errors"
33
34
chanFraming = flag .String ("f" , envOrDefault ("JCALL_FRAMING" , "raw" ), "Channel framing" )
34
35
doBatch = flag .Bool ("batch" , false , "Issue calls as a batch rather than sequentially" )
35
36
doErrors = flag .Bool ("e" , false , "Print error values to stdout" )
37
+ doIndent = flag .Bool ("i" , false , "Indent JSON output" )
36
38
doMulti = flag .Bool ("m" , false , "Issue the same call repeatedly with different arguments" )
37
39
doTiming = flag .Bool ("T" , false , "Print call timing stats" )
38
40
withLogging = flag .Bool ("v" , false , "Enable verbose logging" )
@@ -171,7 +173,7 @@ func printResults(rsps []*jrpc2.Response) (time.Duration, error) {
171
173
if rerr := rsp .Error (); rerr != nil {
172
174
if * doErrors {
173
175
etxt , _ := json .Marshal (rerr )
174
- fmt .Println (string (etxt ))
176
+ fmt .Println (formatJSON (etxt ))
175
177
} else {
176
178
log .Printf ("Error (%d): %v" , i + 1 , rerr )
177
179
}
@@ -185,7 +187,7 @@ func printResults(rsps []*jrpc2.Response) (time.Duration, error) {
185
187
set (perr )
186
188
continue
187
189
}
188
- fmt .Println (string (result ))
190
+ fmt .Println (formatJSON (result ))
189
191
dur += time .Since (pstart )
190
192
}
191
193
return dur , err
@@ -235,7 +237,7 @@ func issueSequential(ctx context.Context, cli *jrpc2.Client, specs []jrpc2.Spec)
235
237
if perr := rsp .UnmarshalResult (& result ); perr != nil {
236
238
return dur , err
237
239
}
238
- fmt .Println (string (result ))
240
+ fmt .Println (formatJSON (result ))
239
241
pdur := time .Since (pstart )
240
242
dur += pdur
241
243
tprintf ("[call %s]: %v call, %v print [%s]\n " , spec .Method , cdur , pdur , callStatus (err ))
@@ -274,6 +276,15 @@ func param(s string) interface{} {
274
276
return json .RawMessage (s )
275
277
}
276
278
279
+ func formatJSON (data []byte ) string {
280
+ if * doIndent {
281
+ var buf bytes.Buffer
282
+ json .Indent (& buf , data , "" , " " )
283
+ return buf .String ()
284
+ }
285
+ return string (data )
286
+ }
287
+
277
288
func isHTTP (addr string ) bool {
278
289
return strings .HasPrefix (addr , "http:" ) || strings .HasPrefix (addr , "https:" )
279
290
}
0 commit comments