aboutsummaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-12-27 20:14:34 +0100
committerMichael Muré <batolettre@gmail.com>2018-12-27 21:27:56 +0100
commit3f694195f86f22ac10e04bf0f0f70535fa30a4a0 (patch)
treea0d3ee081a1e402e6183852f0556753539d1ca48 /vendor
parent32b3e263fc8443f6089b9de8fbce833369461982 (diff)
downloadgit-bug-3f694195f86f22ac10e04bf0f0f70535fa30a4a0.tar.gz
misc: fix non determinist zsh comp generation
upstream PR: https://github.com/spf13/cobra/pull/801
Diffstat (limited to 'vendor')
-rw-r--r--vendor/github.com/spf13/cobra/zsh_completions.go17
1 files changed, 13 insertions, 4 deletions
diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go
index 889c22e2..e76d6071 100644
--- a/vendor/github.com/spf13/cobra/zsh_completions.go
+++ b/vendor/github.com/spf13/cobra/zsh_completions.go
@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"os"
+ "sort"
"strings"
)
@@ -81,16 +82,24 @@ func writeLevel(w io.Writer, root *Command, i int) {
commands := filterByLevel(root, i)
byParent := groupByParent(commands)
- for p, c := range byParent {
- names := names(c)
- fmt.Fprintf(w, " %s)\n", p)
+ // sort the parents to keep a determinist order
+ parents := make([]string, len(byParent))
+ j := 0
+ for parent := range byParent {
+ parents[j] = parent
+ j++
+ }
+ sort.StringSlice(parents).Sort()
+
+ for _, parent := range parents {
+ names := names(byParent[parent])
+ fmt.Fprintf(w, " %s)\n", parent)
fmt.Fprintf(w, " _arguments '%d: :(%s)'\n", i, strings.Join(names, " "))
fmt.Fprintln(w, " ;;")
}
fmt.Fprintln(w, " *)")
fmt.Fprintln(w, " _arguments '*: :_files'")
fmt.Fprintln(w, " ;;")
-
}
func filterByLevel(c *Command, l int) []*Command {