From c345785d28dd2a195dae9a0c2bf51f77100accf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20Trma=C4=8D?= Date: Mon, 27 Feb 2023 19:33:15 +0100 Subject: [PATCH] Factor out the output of data in (skopeo inspect) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two code paths are basically exactly identical, so share the code. Should not change behavior. Signed-off-by: Miloslav Trmač --- cmd/skopeo/inspect.go | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/cmd/skopeo/inspect.go b/cmd/skopeo/inspect.go index fe7c40f8..20ede748 100644 --- a/cmd/skopeo/inspect.go +++ b/cmd/skopeo/inspect.go @@ -72,8 +72,6 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error) rawManifest []byte src types.ImageSource imgInspect *types.ImageInspectInfo - rpt *report.Formatter - data []any ) ctx, cancel := opts.global.commandTimeoutContext() defer cancel() @@ -150,22 +148,7 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error) }, opts.retryOpts); err != nil { return fmt.Errorf("Error reading OCI-formatted configuration data: %w", err) } - if report.IsJSON(opts.format) || opts.format == "" { - var out []byte - out, err = json.MarshalIndent(config, "", " ") - if err == nil { - fmt.Fprintf(stdout, "%s\n", string(out)) - } - } else { - rpt, err = report.New(stdout, "skopeo inspect").Parse(report.OriginUser, opts.format) - if err != nil { - return err - } - defer rpt.Flush() - data = append(data, config) - err = rpt.Execute(data) - } - if err != nil { + if err := opts.writeOutput(stdout, config); err != nil { return fmt.Errorf("Error writing OCI-formatted configuration data to standard output: %w", err) } return nil @@ -231,6 +214,13 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error) logrus.Warnf("Registry disallows tag list retrieval; skipping") } } + return opts.writeOutput(stdout, outputData) +} + +// writeOutput writes outputData depending on opts.format to stdout +func (opts *inspectOptions) writeOutput(stdout io.Writer, outputData any) error { + var data []any + if report.IsJSON(opts.format) || opts.format == "" { out, err := json.MarshalIndent(outputData, "", " ") if err == nil { @@ -239,7 +229,7 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error) return err } - rpt, err = report.New(stdout, "skopeo inspect").Parse(report.OriginUser, opts.format) + rpt, err := report.New(stdout, "skopeo inspect").Parse(report.OriginUser, opts.format) if err != nil { return err }