Browse code

Merge pull request #31085 from vdemeester/sort-stack-ls

Sort `docker stack ls` by name

Daniel Nephin authored on 2017/02/17 04:23:48
Showing 1 changed files
... ...
@@ -3,17 +3,17 @@ package stack
3 3
 import (
4 4
 	"fmt"
5 5
 	"io"
6
+	"sort"
6 7
 	"strconv"
7 8
 	"text/tabwriter"
8 9
 
9
-	"golang.org/x/net/context"
10
-
11 10
 	"github.com/docker/docker/api/types"
12 11
 	"github.com/docker/docker/cli"
13 12
 	"github.com/docker/docker/cli/command"
14 13
 	"github.com/docker/docker/cli/compose/convert"
15 14
 	"github.com/docker/docker/client"
16 15
 	"github.com/spf13/cobra"
16
+	"golang.org/x/net/context"
17 17
 )
18 18
 
19 19
 const (
... ...
@@ -53,12 +53,20 @@ func runList(dockerCli *command.DockerCli, opts listOptions) error {
53 53
 	return nil
54 54
 }
55 55
 
56
+type byName []*stack
57
+
58
+func (n byName) Len() int           { return len(n) }
59
+func (n byName) Swap(i, j int)      { n[i], n[j] = n[j], n[i] }
60
+func (n byName) Less(i, j int) bool { return n[i].Name < n[j].Name }
61
+
56 62
 func printTable(out io.Writer, stacks []*stack) {
57 63
 	writer := tabwriter.NewWriter(out, 0, 4, 2, ' ', 0)
58 64
 
59 65
 	// Ignore flushing errors
60 66
 	defer writer.Flush()
61 67
 
68
+	sort.Sort(byName(stacks))
69
+
62 70
 	fmt.Fprintf(writer, listItemFmt, "NAME", "SERVICES")
63 71
 	for _, stack := range stacks {
64 72
 		fmt.Fprintf(