diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-12-06 13:09:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-06 13:09:23 +0000 |
commit | 188f1989faa7de371558cb5466132edcfe62eda3 (patch) | |
tree | 7d19bf165a8591d601c4461daae7e68618aebff5 /cmd/podman/system/version.go | |
parent | 18e31935ab068567178d50e0317ab2f3ea54926e (diff) | |
parent | 7d22cc88ef382033c59d09570d1525189e104eae (diff) | |
download | podman-188f1989faa7de371558cb5466132edcfe62eda3.tar.gz podman-188f1989faa7de371558cb5466132edcfe62eda3.tar.bz2 podman-188f1989faa7de371558cb5466132edcfe62eda3.zip |
Merge pull request #12487 from jwhonce/issues/10974-2
Refactor podman system to report.Formatter
Diffstat (limited to 'cmd/podman/system/version.go')
-rw-r--r-- | cmd/podman/system/version.go | 77 |
1 files changed, 41 insertions, 36 deletions
diff --git a/cmd/podman/system/version.go b/cmd/podman/system/version.go index 87b806503..521bb8774 100644 --- a/cmd/podman/system/version.go +++ b/cmd/podman/system/version.go @@ -2,16 +2,15 @@ package system import ( "fmt" - "io" "os" "strings" + "text/template" "github.com/containers/common/pkg/completion" "github.com/containers/common/pkg/report" "github.com/containers/podman/v3/cmd/podman/common" "github.com/containers/podman/v3/cmd/podman/registry" "github.com/containers/podman/v3/cmd/podman/validate" - "github.com/containers/podman/v3/libpod/define" "github.com/containers/podman/v3/pkg/domain/entities" "github.com/spf13/cobra" ) @@ -53,54 +52,60 @@ func version(cmd *cobra.Command, args []string) error { return nil } - w, err := report.NewWriterDefault(os.Stdout) - if err != nil { - return err - } - defer w.Flush() + if cmd.Flag("format").Changed { + // Cannot use report.New() as it enforces {{range .}} for OriginUser templates + tmpl := template.New(cmd.Name()).Funcs(template.FuncMap(report.DefaultFuncs)) - if cmd.Flags().Changed("format") { - row := report.NormalizeFormat(versionFormat) - tmpl, err := report.NewTemplate("version 2.0.0").Parse(row) + versionFormat = report.NormalizeFormat(versionFormat) + tmpl, err := tmpl.Parse(versionFormat) if err != nil { return err } - if err := tmpl.Execute(w, versions); err != nil { + if err := tmpl.Execute(os.Stdout, versions); err != nil { // On Failure, assume user is using older version of podman version --format and check client - row = strings.ReplaceAll(row, ".Server.", ".") - tmpl, err := report.NewTemplate("version 1.0.0").Parse(row) + versionFormat = strings.ReplaceAll(versionFormat, ".Server.", ".") + tmpl, err := tmpl.Parse(versionFormat) if err != nil { return err } - if err := tmpl.Execute(w, versions.Client); err != nil { + if err := tmpl.Execute(os.Stdout, versions.Client); err != nil { return err } } return nil } - if versions.Server != nil { - if _, err := fmt.Fprintf(w, "Client:\n"); err != nil { - return err - } - formatVersion(w, versions.Client) - if _, err := fmt.Fprintf(w, "\nServer:\n"); err != nil { - return err - } - formatVersion(w, versions.Server) - } else { - formatVersion(w, versions.Client) + rpt := report.New(os.Stdout, cmd.Name()) + defer rpt.Flush() + rpt, err = rpt.Parse(report.OriginPodman, versionTemplate) + if err != nil { + return err } - return nil + return rpt.Execute(versions) } -func formatVersion(w io.Writer, version *define.Version) { - fmt.Fprintf(w, "Version:\t%s\n", version.Version) - fmt.Fprintf(w, "API Version:\t%s\n", version.APIVersion) - fmt.Fprintf(w, "Go Version:\t%s\n", version.GoVersion) - if version.GitCommit != "" { - fmt.Fprintf(w, "Git Commit:\t%s\n", version.GitCommit) - } - fmt.Fprintf(w, "Built:\t%s\n", version.BuiltTime) - fmt.Fprintf(w, "OS/Arch:\t%s\n", version.OsArch) -} +const versionTemplate = `{{with .Client -}} +Client:\tPodman Engine +Version:\t{{.Version}} +API Version:\t{{.APIVersion}} +Go Version:\t{{.GoVersion}} +{{if .GitCommit -}} + Git Commit:\t{{.GitCommit}} +{{- end}} +Built:\t{{.BuiltTime}} +OS/Arch:\t{{.OsArch}} +{{- end}} + +{{- if .Server }}{{with .Server}} + +Server:\tPodman Engine +Version:\t{{.Version}} +API Version:\t{{.APIVersion}} +Go Version:\t{{.GoVersion}} +{{if .GitCommit -}} + Git Commit:\t{{.GitCommit}} +{{- end}} +Built:\t{{.BuiltTime}} +OS/Arch:\t{{.OsArch}} +{{- end}}{{- end}} +` |