Skip to content

Commit

Permalink
sort secrets and configs in cli
Browse files Browse the repository at this point in the history
Signed-off-by: allencloud <allen.sun@daocloud.io>
  • Loading branch information
allencloud committed Jul 7, 2017
1 parent dfdbdab commit c073bb9
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 15 deletions.
13 changes: 13 additions & 0 deletions cli/command/config/ls.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,26 @@
package config

import (
"sort"

"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
"github.com/docker/cli/cli/command/formatter"
"github.com/docker/cli/opts"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/swarm"
"github.com/spf13/cobra"
"golang.org/x/net/context"
)

type byConfigName []swarm.Config

func (r byConfigName) Len() int { return len(r) }
func (r byConfigName) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
func (r byConfigName) Less(i, j int) bool {
return r[i].Spec.Name < r[j].Spec.Name
}

type listOptions struct {
quiet bool
format string
Expand Down Expand Up @@ -55,6 +66,8 @@ func runConfigList(dockerCli command.Cli, options listOptions) error {
}
}

sort.Sort(byConfigName(configs))

configCtx := formatter.Context{
Output: dockerCli.Out(),
Format: formatter.NewConfigFormat(format, options.quiet),
Expand Down
34 changes: 19 additions & 15 deletions cli/command/config/ls_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package config
import (
"bytes"
"io/ioutil"
"strings"
"testing"
"time"

Expand Down Expand Up @@ -73,18 +74,21 @@ func TestConfigList(t *testing.T) {
cmd.SetOutput(buf)
assert.NoError(t, cmd.Execute())
actual := buf.String()
expected := golden.Get(t, []byte(actual), "config-list.golden")
testutil.EqualNormalizedString(t, testutil.RemoveSpace, actual, string(expected))

outArr := strings.Split(strings.TrimSpace(out), "\n")
assert.Equal(t, len(outArr), 2)
assert.Equal(t, strings.Contains(assert[0], "bar"), true)
assert.Equal(t, strings.Contains(assert[1], "bar"), true)
}

func TestConfigListWithQuietOption(t *testing.T) {
buf := new(bytes.Buffer)
cli := test.NewFakeCli(&fakeClient{
configListFunc: func(options types.ConfigListOptions) ([]swarm.Config, error) {
return []swarm.Config{
*Config(ConfigID("ID-foo"), ConfigName("foo")),
*Config(ConfigID("ID-bar"), ConfigName("bar"), ConfigLabels(map[string]string{
"label": "label-bar",
*Config(ConfigID("ID-bar"), ConfigName("bar")),
*Config(ConfigID("ID-foo"), ConfigName("foo"), ConfigLabels(map[string]string{
"label": "label-foo",
})),
}, nil
},
Expand All @@ -103,9 +107,9 @@ func TestConfigListWithConfigFormat(t *testing.T) {
cli := test.NewFakeCli(&fakeClient{
configListFunc: func(options types.ConfigListOptions) ([]swarm.Config, error) {
return []swarm.Config{
*Config(ConfigID("ID-foo"), ConfigName("foo")),
*Config(ConfigID("ID-bar"), ConfigName("bar"), ConfigLabels(map[string]string{
"label": "label-bar",
*Config(ConfigID("ID-bar"), ConfigName("bar")),
*Config(ConfigID("ID-foo"), ConfigName("foo"), ConfigLabels(map[string]string{
"label": "label-foo",
})),
}, nil
},
Expand All @@ -125,9 +129,9 @@ func TestConfigListWithFormat(t *testing.T) {
cli := test.NewFakeCli(&fakeClient{
configListFunc: func(options types.ConfigListOptions) ([]swarm.Config, error) {
return []swarm.Config{
*Config(ConfigID("ID-foo"), ConfigName("foo")),
*Config(ConfigID("ID-bar"), ConfigName("bar"), ConfigLabels(map[string]string{
"label": "label-bar",
*Config(ConfigID("ID-bar"), ConfigName("bar")),
*Config(ConfigID("ID-foo"), ConfigName("foo"), ConfigLabels(map[string]string{
"label": "label-foo",
})),
}, nil
},
Expand All @@ -147,14 +151,14 @@ func TestConfigListWithFilter(t *testing.T) {
assert.Equal(t, "foo", options.Filters.Get("name")[0])
assert.Equal(t, "lbl1=Label-bar", options.Filters.Get("label")[0])
return []swarm.Config{
*Config(ConfigID("ID-foo"),
ConfigName("foo"),
*Config(ConfigID("ID-bar"),
ConfigName("bar"),
ConfigVersion(swarm.Version{Index: 10}),
ConfigCreatedAt(time.Now().Add(-2*time.Hour)),
ConfigUpdatedAt(time.Now().Add(-1*time.Hour)),
),
*Config(ConfigID("ID-bar"),
ConfigName("bar"),
*Config(ConfigID("ID-foo"),
ConfigName("foo"),
ConfigVersion(swarm.Version{Index: 11}),
ConfigCreatedAt(time.Now().Add(-2*time.Hour)),
ConfigUpdatedAt(time.Now().Add(-1*time.Hour)),
Expand Down
14 changes: 14 additions & 0 deletions cli/command/secret/ls.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,26 @@
package secret

import (
"sort"

"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
"github.com/docker/cli/cli/command/formatter"
"github.com/docker/cli/opts"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/swarm"
"github.com/spf13/cobra"
"golang.org/x/net/context"
)

type bySecretName []swarm.Secret

func (r bySecretName) Len() int { return len(r) }
func (r bySecretName) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
func (r bySecretName) Less(i, j int) bool {
return r[i].Spec.Name < r[j].Spec.Name
}

type listOptions struct {
quiet bool
format string
Expand Down Expand Up @@ -53,6 +64,9 @@ func runSecretList(dockerCli command.Cli, options listOptions) error {
format = formatter.TableFormatKey
}
}

sort.Sort(bySecretName(secrets))

secretCtx := formatter.Context{
Output: dockerCli.Out(),
Format: formatter.NewSecretFormat(format, options.quiet),
Expand Down

0 comments on commit c073bb9

Please sign in to comment.