mirror of
https://github.com/containers/podman.git
synced 2025-06-22 18:08:11 +08:00
podman inspect: use report.Formatter over Template
Currently the podman command --format output code uses a mix of report.Formatter and report.Template. I patched report.Formatter to correctly handle newlines[1]. Since we cannot fix this with report.Template we have to migrate all users to report.Formatter. This ensures consistent behavior for all commands. This change does not change the output, we can add a new test for the newline bug when the common PR is vendored in. [1] https://github.com/containers/common/pull/1146 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
@ -8,7 +8,6 @@ import (
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/containers/common/pkg/completion"
|
||||
"github.com/containers/common/pkg/report"
|
||||
@ -176,10 +175,15 @@ func (i *inspector) inspect(namesOrIDs []string) error {
|
||||
}
|
||||
default:
|
||||
// Landing here implies user has given a custom --format
|
||||
row := inspectNormalize(i.options.Format, tmpType)
|
||||
row = report.NormalizeFormat(row)
|
||||
row = report.EnforceRange(row)
|
||||
err = printTmpl(tmpType, row, data)
|
||||
var rpt *report.Formatter
|
||||
format := inspectNormalize(i.options.Format, i.options.Type)
|
||||
rpt, err = report.New(os.Stdout, "inspect").Parse(report.OriginUser, format)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer rpt.Flush()
|
||||
|
||||
err = rpt.Execute(data)
|
||||
}
|
||||
if err != nil {
|
||||
logrus.Errorf("Printing inspect output: %v", err)
|
||||
@ -205,22 +209,6 @@ func printJSON(data interface{}) error {
|
||||
return enc.Encode(data)
|
||||
}
|
||||
|
||||
func printTmpl(typ, row string, data []interface{}) error {
|
||||
// We cannot use c/common/reports here, too many levels of interface{}
|
||||
t, err := template.New(typ + " inspect").Funcs(template.FuncMap(report.DefaultFuncs)).Parse(row)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
w, err := report.NewWriterDefault(os.Stdout)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = t.Execute(w, data)
|
||||
w.Flush()
|
||||
return err
|
||||
}
|
||||
|
||||
func (i *inspector) inspectAll(ctx context.Context, namesOrIDs []string) ([]interface{}, []error, error) {
|
||||
var data []interface{}
|
||||
allErrs := []error{}
|
||||
|
Reference in New Issue
Block a user