From d75672887eb0667d948a2d6aec21ce4bbbd9ed49 Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Mon, 29 Jun 2020 22:21:45 +0200 Subject: [PATCH] mod: use upstream cobra again --- go.mod | 4 +- go.sum | 5 +++ .../spf13/cobra/bash_completions.go | 4 +- vendor/github.com/spf13/cobra/command.go | 20 ++++++++- .../spf13/cobra/custom_completions.go | 42 +++++++++++++------ .../spf13/cobra/projects_using_cobra.md | 5 +-- vendor/modules.txt | 3 +- 7 files changed, 60 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index 24423b2f..c66ca092 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/opencontainers/runc v0.1.1 // indirect github.com/opencontainers/runtime-spec v1.0.1 // indirect github.com/sirupsen/logrus v1.6.0 - github.com/spf13/cobra v1.0.0 + github.com/spf13/cobra v1.0.1-0.20200629195214-2c5a0d300f8b github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2 // indirect go.etcd.io/bbolt v1.3.3 // indirect golang.org/x/net v0.0.0-20200602114024-627f9648deb9 // indirect @@ -42,5 +42,3 @@ require ( k8s.io/client-go v0.17.0 k8s.io/utils v0.0.0-20200109141947-94aeca20bf09 // indirect ) - -replace github.com/spf13/cobra => github.com/villedemontreal/cobra v0.0.6-0.20200602031707-134043491640 diff --git a/go.sum b/go.sum index 42a4fbf1..99271d1a 100644 --- a/go.sum +++ b/go.sum @@ -387,6 +387,11 @@ github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTd github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.0.1-0.20200629195214-2c5a0d300f8b h1:grM+VdcoRu+xbzmCXM1KuH5UQGk9Lc8yCiwZZ2PKVdU= +github.com/spf13/cobra v1.0.1-0.20200629195214-2c5a0d300f8b/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 60a98b6e..ab428ccb 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -423,7 +423,7 @@ fi func writeCommands(buf *bytes.Buffer, cmd *Command) { buf.WriteString(" commands=()\n") for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() || c == cmd.helpCommand { + if !c.IsAvailableCommand() && c != cmd.helpCommand { continue } buf.WriteString(fmt.Sprintf(" commands+=(%q)\n", c.Name())) @@ -616,7 +616,7 @@ func writeArgAliases(buf *bytes.Buffer, cmd *Command) { func gen(buf *bytes.Buffer, cmd *Command) { for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() || c == cmd.helpCommand { + if !c.IsAvailableCommand() && c != cmd.helpCommand { continue } gen(buf, c) diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go index 5b81f61d..5f1caccc 100644 --- a/vendor/github.com/spf13/cobra/command.go +++ b/vendor/github.com/spf13/cobra/command.go @@ -1056,7 +1056,25 @@ func (c *Command) InitDefaultHelpCmd() { Short: "Help about any command", Long: `Help provides help for any command in the application. Simply type ` + c.Name() + ` help [path to command] for full details.`, - + ValidArgsFunction: func(c *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + var completions []string + cmd, _, e := c.Root().Find(args) + if e != nil { + return nil, ShellCompDirectiveNoFileComp + } + if cmd == nil { + // Root help command. + cmd = c.Root() + } + for _, subCmd := range cmd.Commands() { + if subCmd.IsAvailableCommand() || subCmd == cmd.helpCommand { + if strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + } + } + return completions, ShellCompDirectiveNoFileComp + }, Run: func(c *Command, args []string) { cmd, _, e := c.Root().Find(args) if cmd == nil || e != nil { diff --git a/vendor/github.com/spf13/cobra/custom_completions.go b/vendor/github.com/spf13/cobra/custom_completions.go index baeba299..c25c03e4 100644 --- a/vendor/github.com/spf13/cobra/custom_completions.go +++ b/vendor/github.com/spf13/cobra/custom_completions.go @@ -131,6 +131,14 @@ func (c *Command) initCompleteCmd(args []string) { // Remove any description that may be included following a tab character. comp = strings.Split(comp, "\t")[0] } + + // Finally trim the completion. This is especially important to get rid + // of a trailing tab when there are no description following it. + // For example, a sub-command without a description should not be completed + // with a tab at the end (or else zsh will show a -- following it + // although there is no description). + comp = strings.TrimSpace(comp) + // Print each possible completion to stdout for the completion script to consume. fmt.Fprintln(finalCmd.OutOrStdout(), comp) } @@ -198,9 +206,9 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } // The annotation requests simple file completion. There is no reason to do - // that. Let's ignore it in case the program also registered a completion - // function for this flag. Even though it is a mistake on the program side, - // let's be nice when we can. + // that since it is the default behavior anyway. Let's ignore this annotation + // in case the program also registered a completion function for this flag. + // Even though it is a mistake on the program's side, let's be nice when we can. } if subDir, present := flag.Annotations[BashCompSubdirsInDir]; present { @@ -272,13 +280,13 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } }) - // Complete subcommand names + // Complete subcommand names, including the help command if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { // We only complete sub-commands if: // - there are no arguments on the command-line and // - there are no local, non-peristent flag on the command-line for _, subCmd := range finalCmd.Commands() { - if subCmd.IsAvailableCommand() { + if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { if strings.HasPrefix(subCmd.Name(), toComplete) { completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) } @@ -294,13 +302,23 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi // This is for commands that have both subcommands and ValidArgs. if len(finalCmd.ValidArgs) > 0 { if len(finalArgs) == 0 { - // ValidArgs is only for the first argument + // ValidArgs are only for the first argument for _, validArg := range finalCmd.ValidArgs { if strings.HasPrefix(validArg, toComplete) { completions = append(completions, validArg) } } directive = ShellCompDirectiveNoFileComp + + // If no completions were found within commands or ValidArgs, + // see if there are any ArgAliases that should be completed. + if len(completions) == 0 { + for _, argAlias := range finalCmd.ArgAliases { + if strings.HasPrefix(argAlias, toComplete) { + completions = append(completions, argAlias) + } + } + } } // If there are ValidArgs specified (even if they don't match), we stop completion. @@ -320,14 +338,14 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } else { completionFn = finalCmd.ValidArgsFunction } - if completionFn == nil { - // Go custom completion not supported/needed for this flag or command - return finalCmd, completions, directive, nil + if completionFn != nil { + // Go custom completion defined for this flag or command. + // Call the registered completion function to get the completions. + var comps []string + comps, directive = completionFn(finalCmd, finalArgs, toComplete) + completions = append(completions, comps...) } - // Call the registered completion function to get the completions - comps, directive := completionFn(finalCmd, finalArgs, toComplete) - completions = append(completions, comps...) return finalCmd, completions, directive, nil } diff --git a/vendor/github.com/spf13/cobra/projects_using_cobra.md b/vendor/github.com/spf13/cobra/projects_using_cobra.md index ced51f68..de450338 100644 --- a/vendor/github.com/spf13/cobra/projects_using_cobra.md +++ b/vendor/github.com/spf13/cobra/projects_using_cobra.md @@ -4,6 +4,7 @@ - [CockroachDB](http://www.cockroachlabs.com/) - [Delve](https://github.com/derekparker/delve) - [Docker (distribution)](https://github.com/docker/distribution) +- [Etcd](https://etcd.io/) - [Gardener](https://github.com/gardener/gardenctl) - [Giant Swarm's gsctl](https://github.com/giantswarm/gsctl) - [Github CLI](https://github.com/cli/cli) @@ -22,6 +23,4 @@ - [ProjectAtomic (enterprise)](http://www.projectatomic.io/) - [Prototool](https://github.com/uber/prototool) - [Rclone](https://rclone.org/) -- [etcd](https://github.com/coreos/etcd) -- [nehm](https://github.com/bogem/nehm) -- [rkt](https://github.com/coreos/rkt) +- [Skaffold](https://skaffold.dev/) diff --git a/vendor/modules.txt b/vendor/modules.txt index ebff9457..dbff799f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -214,7 +214,7 @@ github.com/pkg/errors ## explicit github.com/sirupsen/logrus github.com/sirupsen/logrus/hooks/writer -# github.com/spf13/cobra v1.0.0 => github.com/villedemontreal/cobra v0.0.6-0.20200602031707-134043491640 +# github.com/spf13/cobra v1.0.1-0.20200629195214-2c5a0d300f8b ## explicit github.com/spf13/cobra # github.com/spf13/pflag v1.0.5 @@ -419,4 +419,3 @@ k8s.io/klog k8s.io/utils/integer # sigs.k8s.io/yaml v1.1.0 sigs.k8s.io/yaml -# github.com/spf13/cobra => github.com/villedemontreal/cobra v0.0.6-0.20200602031707-134043491640