summaryrefslogtreecommitdiff
path: root/cmd/podmanV2/images/history.go
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2020-04-09 08:47:15 -0500
committerBrent Baude <bbaude@redhat.com>2020-04-13 09:15:24 -0500
commit6f650a512948a85bbb1a8830d5700a6ce9375c1d (patch)
tree8cc88145de5cf238c2c3a0475b9553d8a5965156 /cmd/podmanV2/images/history.go
parent1593d4c052fc0795e6fe31917edcb1ecbe5ee192 (diff)
downloadpodman-6f650a512948a85bbb1a8830d5700a6ce9375c1d.tar.gz
podman-6f650a512948a85bbb1a8830d5700a6ce9375c1d.tar.bz2
podman-6f650a512948a85bbb1a8830d5700a6ce9375c1d.zip
podmanv2 history and image remove templates
remove the use of template functions images and history to allow for straight-forward user experience. instead of templates we use structs and struct methods. Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'cmd/podmanV2/images/history.go')
-rw-r--r--cmd/podmanV2/images/history.go48
1 files changed, 39 insertions, 9 deletions
diff --git a/cmd/podmanV2/images/history.go b/cmd/podmanV2/images/history.go
index f6f15e2f2..48575b33a 100644
--- a/cmd/podmanV2/images/history.go
+++ b/cmd/podmanV2/images/history.go
@@ -8,10 +8,11 @@ import (
"text/tabwriter"
"text/template"
"time"
+ "unicode"
"github.com/containers/libpod/cmd/podmanV2/registry"
- "github.com/containers/libpod/cmd/podmanV2/report"
"github.com/containers/libpod/pkg/domain/entities"
+ "github.com/docker/go-units"
jsoniter "github.com/json-iterator/go"
"github.com/pkg/errors"
"github.com/spf13/cobra"
@@ -86,10 +87,13 @@ func history(cmd *cobra.Command, args []string) error {
}
return err
}
-
+ var hr []historyreporter
+ for _, l := range results.Layers {
+ hr = append(hr, historyreporter{l})
+ }
// Defaults
hdr := "ID\tCREATED\tCREATED BY\tSIZE\tCOMMENT\n"
- row := "{{slice .ID 0 12}}\t{{humanDuration .Created}}\t{{ellipsis .CreatedBy 45}}\t{{.Size}}\t{{.Comment}}\n"
+ row := "{{.ID}}\t{{.Created}}\t{{.CreatedBy}}\t{{.Size}}\t{{.Comment}}\n"
if len(opts.format) > 0 {
hdr = ""
@@ -100,9 +104,9 @@ func history(cmd *cobra.Command, args []string) error {
} else {
switch {
case opts.human:
- row = "{{slice .ID 0 12}}\t{{humanDuration .Created}}\t{{ellipsis .CreatedBy 45}}\t{{humanSize .Size}}\t{{.Comment}}\n"
+ row = "{{.ID}}\t{{.Created}}\t{{.CreatedBy}}\t{{.Size}}\t{{.Comment}}\n"
case opts.noTrunc:
- row = "{{.ID}}\t{{humanDuration .Created}}\t{{.CreatedBy}}\t{{humanSize .Size}}\t{{.Comment}}\n"
+ row = "{{.ID}}\t{{.Created}}\t{{.CreatedBy}}\t{{.Size}}\t{{.Comment}}\n"
case opts.quiet:
hdr = ""
row = "{{.ID}}\n"
@@ -110,14 +114,40 @@ func history(cmd *cobra.Command, args []string) error {
}
format := hdr + "{{range . }}" + row + "{{end}}"
- tmpl := template.Must(template.New("report").Funcs(report.PodmanTemplateFuncs()).Parse(format))
+ tmpl := template.Must(template.New("report").Parse(format))
w := tabwriter.NewWriter(os.Stdout, 8, 2, 2, ' ', 0)
-
- _, _ = w.Write(report.ReportHeader("id", "created", "created by", "size", "comment"))
- err = tmpl.Execute(w, results.Layers)
+ err = tmpl.Execute(w, hr)
if err != nil {
fmt.Fprintln(os.Stderr, errors.Wrapf(err, "Failed to print report"))
}
w.Flush()
return nil
}
+
+type historyreporter struct {
+ entities.ImageHistoryLayer
+}
+
+func (h historyreporter) Created() string {
+ return units.HumanDuration(time.Since(time.Unix(h.ImageHistoryLayer.Created, 0))) + " ago"
+}
+
+func (h historyreporter) Size() string {
+ s := units.HumanSizeWithPrecision(float64(h.ImageHistoryLayer.Size), 3)
+ i := strings.LastIndexFunc(s, unicode.IsNumber)
+ return s[:i+1] + " " + s[i+1:]
+}
+
+func (h historyreporter) CreatedBy() string {
+ if len(h.ImageHistoryLayer.CreatedBy) > 45 {
+ return h.ImageHistoryLayer.CreatedBy[:45-3] + "..."
+ }
+ return h.ImageHistoryLayer.CreatedBy
+}
+
+func (h historyreporter) ID() string {
+ if !opts.noTrunc && len(h.ImageHistoryLayer.ID) >= 12 {
+ return h.ImageHistoryLayer.ID[0:12]
+ }
+ return h.ImageHistoryLayer.ID
+}