From b0e9260bae15a3d94ea5abb2992fbcabfcb5c15e Mon Sep 17 00:00:00 2001 From: Josh Dolitsky Date: Wed, 6 Feb 2019 18:16:30 -0600 Subject: [PATCH] clean up table rows code Signed-off-by: Josh Dolitsky --- pkg/registry/cache.go | 23 +++++++++++++++-------- pkg/registry/client.go | 4 +--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/registry/cache.go b/pkg/registry/cache.go index 78c2c6702..3fd9c3654 100644 --- a/pkg/registry/cache.go +++ b/pkg/registry/cache.go @@ -39,6 +39,10 @@ import ( "k8s.io/helm/pkg/chartutil" ) +var ( + tableHeaders = []string{"name", "version", "digest", "size", "created"} +) + type ( filesystemCache struct { out io.Writer @@ -242,7 +246,7 @@ func (cache *filesystemCache) DeleteReference(ref *Reference) error { return os.RemoveAll(tagDir) } -func (cache *filesystemCache) TableRows() ([][]string, error) { +func (cache *filesystemCache) TableRows() ([][]interface{}, error) { return getRefsSorted(filepath.Join(cache.rootDir, "refs")) } @@ -409,7 +413,7 @@ func shortDigest(digest string) string { } // getRefsSorted returns a map of all refs stored in a refsRootDir -func getRefsSorted(refsRootDir string) ([][]string, error) { +func getRefsSorted(refsRootDir string) ([][]interface{}, error) { refsMap := map[string]map[string]string{} // Walk the storage dir, check for symlinks under "refs" dir pointing to valid files in "blobs/" and "charts/" @@ -458,7 +462,7 @@ func getRefsSorted(refsRootDir string) ([][]string, error) { // Filter out any refs that are incomplete (do not have all required fields) for k, ref := range refsMap { allKeysFound := true - for _, v := range []string{"name", "version", "digest", "size", "created"} { + for _, v := range tableHeaders { if _, ok := ref[v]; !ok { allKeysFound = false break @@ -469,17 +473,20 @@ func getRefsSorted(refsRootDir string) ([][]string, error) { } } - // Sort and convert to slice of slices - var refs [][]string + // Sort and convert to format expected by uitable + refs := make([][]interface{}, len(refsMap)) keys := make([]string, 0, len(refsMap)) for key := range refsMap { keys = append(keys, key) } sort.Strings(keys) - for _, key := range keys { + for i, key := range keys { + refs[i] = make([]interface{}, len(tableHeaders)+1) + refs[i][0] = key ref := refsMap[key] - ref["ref"] = key - refs = append(refs, []string{key, ref["name"], ref["version"], ref["digest"], ref["size"], ref["created"]}) + for j, k := range tableHeaders { + refs[i][j+1] = ref[k] + } } return refs, err diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 3c4823467..edba2faca 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -145,9 +145,7 @@ func (c *Client) PrintChartTable() error { return err } for _, row := range rows { - if len(row) == 6 { - table.AddRow(row[0], row[1], row[2], row[3], row[4], row[5]) - } + table.AddRow(row...) } fmt.Fprintln(c.out, table.String()) return nil