From f14cb5ef61e37d27bdde6dbc94b5bd910c2e8cf3 Mon Sep 17 00:00:00 2001
From: Paul Holzinger <paul.holzinger@web.de>
Date: Mon, 9 Nov 2020 12:54:17 +0100
Subject: Add support for podman search --format json

Fixes #8274

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
---
 cmd/podman/images/search.go | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'cmd')

diff --git a/cmd/podman/images/search.go b/cmd/podman/images/search.go
index 774b39d3a..7de6a7316 100644
--- a/cmd/podman/images/search.go
+++ b/cmd/podman/images/search.go
@@ -1,6 +1,7 @@
 package images
 
 import (
+	"fmt"
 	"os"
 	"text/tabwriter"
 	"text/template"
@@ -81,7 +82,7 @@ func init() {
 // searchFlags set the flags for the pull command.
 func searchFlags(flags *pflag.FlagSet) {
 	flags.StringSliceVarP(&searchOptions.Filters, "filter", "f", []string{}, "Filter output based on conditions provided (default [])")
-	flags.StringVar(&searchOptions.Format, "format", "", "Change the output format to a Go template")
+	flags.StringVar(&searchOptions.Format, "format", "", "Change the output format to JSON or a Go template")
 	flags.IntVar(&searchOptions.Limit, "limit", 0, "Limit the number of results")
 	flags.BoolVar(&searchOptions.NoTrunc, "no-trunc", false, "Do not truncate the output")
 	flags.StringVar(&searchOptions.Authfile, "authfile", auth.GetDefaultAuthFile(), "Path of the authentication file. Use REGISTRY_AUTH_FILE environment variable to override")
@@ -135,6 +136,13 @@ func imageSearch(cmd *cobra.Command, args []string) error {
 			return errors.Errorf("filters are not applicable to list tags result")
 		}
 		row = "{{.Name}}\t{{.Tag}}\n"
+	case report.IsJSON(searchOptions.Format):
+		prettyJSON, err := json.MarshalIndent(searchReport, "", "    ")
+		if err != nil {
+			return err
+		}
+		fmt.Println(string(prettyJSON))
+		return nil
 	case cmd.Flags().Changed("format"):
 		renderHeaders = parse.HasTable(searchOptions.Format)
 		row = report.NormalizeFormat(searchOptions.Format)
-- 
cgit v1.2.3-54-g00ecf