Skip to content

Commit 3dbd35e

Browse files
committed
trying alias of quiet for permissive in jsoncols, jsonrange
1 parent 5ef41da commit 3dbd35e

File tree

2 files changed

+37
-33
lines changed

2 files changed

+37
-33
lines changed

cmds/jsoncols/jsoncols.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,15 @@ Would yield
9090
permissive bool
9191
)
9292

93+
func handleError(err error, exitCode int) {
94+
if permissive == false {
95+
fmt.Fprintf(os.Stderr, "%s\n", err)
96+
}
97+
if exitCode >= 0 {
98+
os.Exit(exitCode)
99+
}
100+
}
101+
93102
func init() {
94103
// Basic Options
95104
flag.BoolVar(&showHelp, "h", false, "display help")
@@ -106,6 +115,7 @@ func init() {
106115
flag.BoolVar(&runInteractive, "repl", false, "run interactively")
107116
flag.StringVar(&delimiter, "d", delimiter, "set the delimiter for multi-field output")
108117
flag.BoolVar(&permissive, "permissive", false, "suppress error messages")
118+
flag.BoolVar(&permissive, "quiet", false, "suppress error messages")
109119
}
110120

111121
func main() {
@@ -139,15 +149,13 @@ func main() {
139149

140150
in, err := cli.Open(inputFName, os.Stdin)
141151
if err != nil {
142-
fmt.Fprintf(os.Stderr, "%s\n", err)
143-
os.Exit(1)
152+
handleError(err, 1)
144153
}
145154
defer cli.CloseFile(inputFName, in)
146155

147156
out, err := cli.Create(outputFName, os.Stdout)
148157
if err != nil {
149-
fmt.Fprintf(os.Stderr, "%s\n", err)
150-
os.Exit(1)
158+
handleError(err, 1)
151159
}
152160
defer cli.CloseFile(outputFName, out)
153161

@@ -166,14 +174,12 @@ func main() {
166174
// READ in the JSON document
167175
buf, err := ioutil.ReadAll(in)
168176
if err != nil {
169-
fmt.Fprintf(os.Stderr, "%s\n", err)
170-
os.Exit(1)
177+
handleError(err, 1)
171178
}
172179
// JSON Decode our document
173180
data, err := dotpath.JSONDecode(buf)
174181
if err != nil {
175-
fmt.Fprintf(os.Stderr, "%s\n", err)
176-
os.Exit(1)
182+
handleError(err, 1)
177183
}
178184

179185
// For each dotpath expression return a result
@@ -194,14 +200,12 @@ func main() {
194200
default:
195201
src, err := json.Marshal(result)
196202
if err != nil {
197-
fmt.Fprintf(os.Stderr, "%s\n", err)
198-
os.Exit(1)
203+
handleError(err, 1)
199204
}
200205
fmt.Fprintf(out, "%s", src)
201206
}
202-
} else if permissive == false {
203-
fmt.Fprintf(os.Stderr, "%s\n", err)
204-
os.Exit(1)
207+
} else {
208+
handleError(err, 1)
205209
}
206210
}
207211
}

cmds/jsonrange/jsonrange.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,15 @@ func srcVals(data interface{}, limit int) ([]string, error) {
226226
return nil, fmt.Errorf("%T does not support for range", data)
227227
}
228228

229+
func handleError(err error, exitCode int) {
230+
if permissive == false {
231+
fmt.Fprintf(os.Stderr, "%s\n", err)
232+
}
233+
if exitCode >= 0 {
234+
os.Exit(exitCode)
235+
}
236+
}
237+
229238
func init() {
230239
// Standard Options
231240
flag.BoolVar(&showHelp, "h", false, "display help")
@@ -244,6 +253,7 @@ func init() {
244253
flag.StringVar(&delimiter, "delimiter", "", "set delimiter for range output")
245254
flag.IntVar(&limit, "limit", 0, "limit the number of items output")
246255
flag.BoolVar(&permissive, "permissive", false, "suppress errors messages")
256+
flag.BoolVar(&permissive, "quiet", false, "suppress errors messages")
247257
}
248258

249259
func main() {
@@ -274,15 +284,13 @@ func main() {
274284

275285
in, err := cli.Open(inputFName, os.Stdin)
276286
if err != nil {
277-
fmt.Fprintf(os.Stderr, "%s\n", err)
278-
os.Exit(1)
287+
handleError(err, 1)
279288
}
280289
defer cli.CloseFile(inputFName, in)
281290

282291
out, err := cli.Create(outputFName, os.Stdout)
283292
if err != nil {
284-
fmt.Fprintf(os.Stderr, "%s\n", err)
285-
os.Exit(1)
293+
handleError(err, 1)
286294
}
287295
defer cli.CloseFile(outputFName, out)
288296

@@ -294,16 +302,11 @@ func main() {
294302
// Read in the complete JSON data structure
295303
buf, err := ioutil.ReadAll(in)
296304
if err != nil {
297-
fmt.Fprintf(os.Stderr, "%s\n", err)
298-
os.Exit(1)
305+
handleError(err, 1)
299306
}
300307

301-
if len(buf) == 0 && permissive == false {
302-
fmt.Fprintln(os.Stderr, cfg.Usage())
303-
os.Exit(1)
304-
}
305-
if len(buf) == 0 && permissive == true {
306-
os.Exit(0)
308+
if len(buf) == 0 {
309+
handleError(fmt.Errorf("%s", cfg.Usage()), 1)
307310
}
308311

309312
var (
@@ -323,34 +326,31 @@ func main() {
323326
data, err = dotpath.EvalJSON(p, buf)
324327
}
325328
if err != nil {
326-
fmt.Fprintf(os.Stderr, "%s\n", err)
327-
os.Exit(1)
329+
handleError(err, 1)
328330
}
329331
switch {
330332
case showLength:
331333
if l, err := getLength(data); err == nil {
332334
fmt.Fprintf(out, "%d", l)
333335
} else {
334-
fmt.Fprintf(os.Stderr, "%s\n", err)
336+
handleError(err, -1)
335337
}
336338
case showLast:
337339
if l, err := getLength(data); err == nil {
338340
fmt.Fprintf(out, "%d", l-1)
339341
} else {
340-
fmt.Fprintf(os.Stderr, "%s\n", err)
342+
handleError(err, -1)
341343
}
342344
case showValues:
343345
elems, err := srcVals(data, limit-1)
344346
if err != nil {
345-
fmt.Fprintf(os.Stderr, "%s\n", err)
346-
os.Exit(1)
347+
handleError(err, 1)
347348
}
348349
fmt.Fprintln(out, strings.Join(elems, delimiter))
349350
default:
350351
elems, err := srcKeys(data, limit-1)
351352
if err != nil {
352-
fmt.Fprintf(os.Stderr, "%s\n", err)
353-
os.Exit(1)
353+
handleError(err, 1)
354354
}
355355
fmt.Fprintln(out, strings.Join(elems, delimiter))
356356
}

0 commit comments

Comments
 (0)