From 995cd0dc32ff630fa6f08fceeb5e4b7145941783 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Wed, 13 May 2020 18:07:41 +0100 Subject: [PATCH] backend: add --json flag to always output JSON --- cmd/backend/backend.go | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/cmd/backend/backend.go b/cmd/backend/backend.go index 3e8983bff..2d32ff447 100644 --- a/cmd/backend/backend.go +++ b/cmd/backend/backend.go @@ -18,12 +18,14 @@ import ( var ( options []string + useJSON bool ) func init() { cmd.Root.AddCommand(commandDefinition) cmdFlags := commandDefinition.Flags() flags.StringArrayVarP(cmdFlags, &options, "option", "o", options, "Option in the form name=value or name.") + flags.BoolVarP(cmdFlags, &useJSON, "json", "", useJSON, "Always output in JSON format.") } var commandDefinition = &cobra.Command{ @@ -97,15 +99,23 @@ Note to run these commands on a running backend then see } // Output the result - switch x := out.(type) { - case nil: - case string: - fmt.Println(out) - case []string: - for _, line := range x { - fmt.Println(line) + writeJSON := false + if useJSON { + writeJSON = true + } else { + switch x := out.(type) { + case nil: + case string: + fmt.Println(out) + case []string: + for _, line := range x { + fmt.Println(line) + } + default: + writeJSON = true } - default: + } + if writeJSON { // Write indented JSON to the output enc := json.NewEncoder(os.Stdout) enc.SetIndent("", "\t")