mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #7776 from eparis/minor-bash-fixes
Cobra update and bash completions fix
This commit is contained in:
		
							
								
								
									
										2
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							@@ -484,7 +484,7 @@
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			"ImportPath": "github.com/spf13/cobra",
 | 
								"ImportPath": "github.com/spf13/cobra",
 | 
				
			||||||
			"Rev": "69e5f196b5d30673deb07a2221d89cf62e4b74ae"
 | 
								"Rev": "bba56042cf767e329430e7c7f68c3f9f640b4b8b"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			"ImportPath": "github.com/spf13/pflag",
 | 
								"ImportPath": "github.com/spf13/pflag",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										70
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										70
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -348,6 +348,76 @@ Like help the function and template are over ridable through public methods.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    command.SetUsageTemplate(s string)
 | 
					    command.SetUsageTemplate(s string)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## PreRun or PostRun Hooks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistendPostRun` and `PostRun` will be executed after `Run`.  The `Persistent*Run` functions will be inherrited by children if they do not declare their own.  These function are run in the following order:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `PersistentPreRun`
 | 
				
			||||||
 | 
					- `PreRun`
 | 
				
			||||||
 | 
					- `Run`
 | 
				
			||||||
 | 
					- `PostRun`
 | 
				
			||||||
 | 
					- `PersistenPostRun`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					And example of two commands which use all of these features is below.  When the subcommand in executed it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var rootCmd = &cobra.Command{
 | 
				
			||||||
 | 
							Use:   "root [sub]",
 | 
				
			||||||
 | 
							Short: "My root command",
 | 
				
			||||||
 | 
							PersistentPreRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							PreRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside rootCmd PreRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside rootCmd Run with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							PostRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside rootCmd PostRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							PersistentPostRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var subCmd = &cobra.Command{
 | 
				
			||||||
 | 
							Use:   "sub [no options!]",
 | 
				
			||||||
 | 
							Short: "My sub command",
 | 
				
			||||||
 | 
							PreRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside subCmd PreRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside subCmd Run with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							PostRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside subCmd PostRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							PersistentPostRun: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
								fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rootCmd.AddCommand(subCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rootCmd.SetArgs([]string{""})
 | 
				
			||||||
 | 
						_ = rootCmd.Execute()
 | 
				
			||||||
 | 
						fmt.Print("\n")
 | 
				
			||||||
 | 
						rootCmd.SetArgs([]string{"sub", "arg1", "arg2"})
 | 
				
			||||||
 | 
						_ = rootCmd.Execute()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Generating markdown formatted documentation for your command
 | 
					## Generating markdown formatted documentation for your command
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cobra can generate a markdown formatted document based on the subcommands, flags, etc. A simple example of how to do this for your command can be found in [Markdown Docs](md_docs.md)
 | 
					Cobra can generate a markdown formatted document based on the subcommands, flags, etc. A simple example of how to do this for your command can be found in [Markdown Docs](md_docs.md)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/bash_completions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/bash_completions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,7 +22,7 @@ func preamble(out *bytes.Buffer) {
 | 
				
			|||||||
__debug()
 | 
					__debug()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
 | 
					    if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
 | 
				
			||||||
        echo "$*" >> ${BASH_COMP_DEBUG_FILE}
 | 
					        echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -93,6 +93,13 @@ __handle_reply()
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The arguments should be in the form "ext1|ext2|extn"
 | 
				
			||||||
 | 
					__handle_filename_extension_flag()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    local ext="$1"
 | 
				
			||||||
 | 
					    _filedir "@(${ext})"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__handle_flag()
 | 
					__handle_flag()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
 | 
					    __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
 | 
				
			||||||
@@ -173,10 +180,9 @@ __handle_word()
 | 
				
			|||||||
func postscript(out *bytes.Buffer, name string) {
 | 
					func postscript(out *bytes.Buffer, name string) {
 | 
				
			||||||
	fmt.Fprintf(out, "__start_%s()\n", name)
 | 
						fmt.Fprintf(out, "__start_%s()\n", name)
 | 
				
			||||||
	fmt.Fprintf(out, `{
 | 
						fmt.Fprintf(out, `{
 | 
				
			||||||
    local cur prev words cword split
 | 
					    local cur prev words cword
 | 
				
			||||||
    _init_completion -s || return
 | 
					    _init_completion -s || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local completions_func
 | 
					 | 
				
			||||||
    local c=0
 | 
					    local c=0
 | 
				
			||||||
    local flags=()
 | 
					    local flags=()
 | 
				
			||||||
    local two_word_flags=()
 | 
					    local two_word_flags=()
 | 
				
			||||||
@@ -199,6 +205,9 @@ func postscript(out *bytes.Buffer, name string) {
 | 
				
			|||||||
func writeCommands(cmd *Command, out *bytes.Buffer) {
 | 
					func writeCommands(cmd *Command, out *bytes.Buffer) {
 | 
				
			||||||
	fmt.Fprintf(out, "    commands=()\n")
 | 
						fmt.Fprintf(out, "    commands=()\n")
 | 
				
			||||||
	for _, c := range cmd.Commands() {
 | 
						for _, c := range cmd.Commands() {
 | 
				
			||||||
 | 
							if len(c.Deprecated) > 0 {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		fmt.Fprintf(out, "    commands+=(%q)\n", c.Name())
 | 
							fmt.Fprintf(out, "    commands+=(%q)\n", c.Name())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	fmt.Fprintf(out, "\n")
 | 
						fmt.Fprintf(out, "\n")
 | 
				
			||||||
@@ -211,7 +220,7 @@ func writeFlagHandler(name string, annotations map[string][]string, out *bytes.B
 | 
				
			|||||||
			fmt.Fprintf(out, "    flags_with_completion+=(%q)\n", name)
 | 
								fmt.Fprintf(out, "    flags_with_completion+=(%q)\n", name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ext := strings.Join(value, "|")
 | 
								ext := strings.Join(value, "|")
 | 
				
			||||||
			ext = "_filedir '@(" + ext + ")'"
 | 
								ext = "__handle_filename_extension_flag " + ext
 | 
				
			||||||
			fmt.Fprintf(out, "    flags_completion+=(%q)\n", ext)
 | 
								fmt.Fprintf(out, "    flags_completion+=(%q)\n", ext)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -291,6 +300,9 @@ func writeRequiredNoun(cmd *Command, out *bytes.Buffer) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func gen(cmd *Command, out *bytes.Buffer) {
 | 
					func gen(cmd *Command, out *bytes.Buffer) {
 | 
				
			||||||
	for _, c := range cmd.Commands() {
 | 
						for _, c := range cmd.Commands() {
 | 
				
			||||||
 | 
							if len(c.Deprecated) > 0 {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		gen(c, out)
 | 
							gen(c, out)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	commandName := cmd.CommandPath()
 | 
						commandName := cmd.CommandPath()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/bash_completions.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/bash_completions.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -123,15 +123,18 @@ and you'll get something like
 | 
				
			|||||||
In this example we use --filename= and expect to get a json or yaml file as the argument. To make this easier we annotate the --filename flag with valid filename extensions.
 | 
					In this example we use --filename= and expect to get a json or yaml file as the argument. To make this easier we annotate the --filename flag with valid filename extensions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
	annotations := make([]string, 3)
 | 
						annotations := []string{"json", "yaml", "yml"}
 | 
				
			||||||
	annotations[0] = "json"
 | 
					 | 
				
			||||||
	annotations[1] = "yaml"
 | 
					 | 
				
			||||||
	annotations[2] = "yml"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	annotation := make(map[string][]string)
 | 
						annotation := make(map[string][]string)
 | 
				
			||||||
	annotation[cobra.BashCompFilenameExt] = annotations
 | 
						annotation[cobra.BashCompFilenameExt] = annotations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	flag := &pflag.Flag{"filename", "f", usage, value, value.String(), false, annotation}
 | 
						flag := &pflag.Flag{
 | 
				
			||||||
 | 
							Name:        "filename",
 | 
				
			||||||
 | 
							Shorthand:   "f",
 | 
				
			||||||
 | 
							Usage:       usage,
 | 
				
			||||||
 | 
							Value:       value,
 | 
				
			||||||
 | 
							DefValue:    value.String(),
 | 
				
			||||||
 | 
							Annotations: annotation,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	cmd.Flags().AddFlag(flag)
 | 
						cmd.Flags().AddFlag(flag)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/bash_completions_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/bash_completions_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -11,6 +11,12 @@ import (
 | 
				
			|||||||
var _ = fmt.Println
 | 
					var _ = fmt.Println
 | 
				
			||||||
var _ = os.Stderr
 | 
					var _ = os.Stderr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func checkOmit(t *testing.T, found, unexpected string) {
 | 
				
			||||||
 | 
						if strings.Contains(found, unexpected) {
 | 
				
			||||||
 | 
							t.Errorf("Unexpected response.\nGot: %q\nBut should not have!\n", unexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func check(t *testing.T, found, expected string) {
 | 
					func check(t *testing.T, found, expected string) {
 | 
				
			||||||
	if !strings.Contains(found, expected) {
 | 
						if !strings.Contains(found, expected) {
 | 
				
			||||||
		t.Errorf("Unexpected response.\nExpecting to contain: \n %q\nGot:\n %q\n", expected, found)
 | 
							t.Errorf("Unexpected response.\nExpecting to contain: \n %q\nGot:\n %q\n", expected, found)
 | 
				
			||||||
@@ -28,7 +34,7 @@ COMPREPLY=( "hello" )
 | 
				
			|||||||
func TestBashCompletions(t *testing.T) {
 | 
					func TestBashCompletions(t *testing.T) {
 | 
				
			||||||
	c := initializeWithRootCmd()
 | 
						c := initializeWithRootCmd()
 | 
				
			||||||
	cmdEcho.AddCommand(cmdTimes)
 | 
						cmdEcho.AddCommand(cmdTimes)
 | 
				
			||||||
	c.AddCommand(cmdEcho, cmdPrint)
 | 
						c.AddCommand(cmdEcho, cmdPrint, cmdDeprecated)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// custom completion function
 | 
						// custom completion function
 | 
				
			||||||
	c.BashCompletionFunction = bash_completion_func
 | 
						c.BashCompletionFunction = bash_completion_func
 | 
				
			||||||
@@ -70,5 +76,7 @@ func TestBashCompletions(t *testing.T) {
 | 
				
			|||||||
	// check for required nouns
 | 
						// check for required nouns
 | 
				
			||||||
	check(t, str, `must_have_one_noun+=("pods")`)
 | 
						check(t, str, `must_have_one_noun+=("pods")`)
 | 
				
			||||||
	// check for filename extention flags
 | 
						// check for filename extention flags
 | 
				
			||||||
	check(t, str, `flags_completion+=("_filedir '@(json|yaml|yml)'")`)
 | 
						check(t, str, `flags_completion+=("__handle_filename_extension_flag json|yaml|yml")`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						checkOmit(t, str, cmdDeprecated.Name())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										76
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/cobra_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/cobra_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -13,6 +13,7 @@ var _ = fmt.Println
 | 
				
			|||||||
var _ = os.Stderr
 | 
					var _ = os.Stderr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var tp, te, tt, t1 []string
 | 
					var tp, te, tt, t1 []string
 | 
				
			||||||
 | 
					var rootPersPre, echoPre, echoPersPre, timesPersPre []string
 | 
				
			||||||
var flagb1, flagb2, flagb3, flagbr, flagbp bool
 | 
					var flagb1, flagb2, flagb3, flagbr, flagbp bool
 | 
				
			||||||
var flags1, flags2a, flags2b, flags3 string
 | 
					var flags1, flags2a, flags2b, flags3 string
 | 
				
			||||||
var flagi1, flagi2, flagi3, flagir int
 | 
					var flagi1, flagi2, flagi3, flagir int
 | 
				
			||||||
@@ -38,6 +39,12 @@ var cmdEcho = &Command{
 | 
				
			|||||||
	Short:   "Echo anything to the screen",
 | 
						Short:   "Echo anything to the screen",
 | 
				
			||||||
	Long:    `an utterly useless command for testing.`,
 | 
						Long:    `an utterly useless command for testing.`,
 | 
				
			||||||
	Example: "Just run cobra-test echo",
 | 
						Example: "Just run cobra-test echo",
 | 
				
			||||||
 | 
						PersistentPreRun: func(cmd *Command, args []string) {
 | 
				
			||||||
 | 
							echoPersPre = args
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						PreRun: func(cmd *Command, args []string) {
 | 
				
			||||||
 | 
							echoPre = args
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	Run: func(cmd *Command, args []string) {
 | 
						Run: func(cmd *Command, args []string) {
 | 
				
			||||||
		te = args
 | 
							te = args
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
@@ -51,10 +58,22 @@ var cmdEchoSub = &Command{
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var cmdDeprecated = &Command{
 | 
				
			||||||
 | 
						Use:        "deprecated [can't do anything here]",
 | 
				
			||||||
 | 
						Short:      "A command which is deprecated",
 | 
				
			||||||
 | 
						Long:       `an absolutely utterly useless command for testing deprecation!.`,
 | 
				
			||||||
 | 
						Deprecated: "Please use echo instead",
 | 
				
			||||||
 | 
						Run: func(cmd *Command, args []string) {
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var cmdTimes = &Command{
 | 
					var cmdTimes = &Command{
 | 
				
			||||||
	Use:   "times [# times] [string to echo]",
 | 
						Use:   "times [# times] [string to echo]",
 | 
				
			||||||
	Short: "Echo anything to the screen more times",
 | 
						Short: "Echo anything to the screen more times",
 | 
				
			||||||
	Long:  `a slightly useless command for testing.`,
 | 
						Long:  `a slightly useless command for testing.`,
 | 
				
			||||||
 | 
						PersistentPreRun: func(cmd *Command, args []string) {
 | 
				
			||||||
 | 
							timesPersPre = args
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	Run: func(cmd *Command, args []string) {
 | 
						Run: func(cmd *Command, args []string) {
 | 
				
			||||||
		tt = args
 | 
							tt = args
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
@@ -64,6 +83,9 @@ var cmdRootNoRun = &Command{
 | 
				
			|||||||
	Use:   "cobra-test",
 | 
						Use:   "cobra-test",
 | 
				
			||||||
	Short: "The root can run it's own function",
 | 
						Short: "The root can run it's own function",
 | 
				
			||||||
	Long:  "The root description for help",
 | 
						Long:  "The root description for help",
 | 
				
			||||||
 | 
						PersistentPreRun: func(cmd *Command, args []string) {
 | 
				
			||||||
 | 
							rootPersPre = args
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var cmdRootSameName = &Command{
 | 
					var cmdRootSameName = &Command{
 | 
				
			||||||
@@ -140,6 +162,8 @@ func commandInit() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func initialize() *Command {
 | 
					func initialize() *Command {
 | 
				
			||||||
	tt, tp, te = nil, nil, nil
 | 
						tt, tp, te = nil, nil, nil
 | 
				
			||||||
 | 
						rootPersPre, echoPre, echoPersPre, timesPersPre = nil, nil, nil, nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var c = cmdRootNoRun
 | 
						var c = cmdRootNoRun
 | 
				
			||||||
	flagInit()
 | 
						flagInit()
 | 
				
			||||||
	commandInit()
 | 
						commandInit()
 | 
				
			||||||
@@ -148,6 +172,7 @@ func initialize() *Command {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func initializeWithSameName() *Command {
 | 
					func initializeWithSameName() *Command {
 | 
				
			||||||
	tt, tp, te = nil, nil, nil
 | 
						tt, tp, te = nil, nil, nil
 | 
				
			||||||
 | 
						rootPersPre, echoPre, echoPersPre, timesPersPre = nil, nil, nil, nil
 | 
				
			||||||
	var c = cmdRootSameName
 | 
						var c = cmdRootSameName
 | 
				
			||||||
	flagInit()
 | 
						flagInit()
 | 
				
			||||||
	commandInit()
 | 
						commandInit()
 | 
				
			||||||
@@ -205,7 +230,7 @@ func fullTester(c *Command, input string) resulter {
 | 
				
			|||||||
	// Testing flag with invalid input
 | 
						// Testing flag with invalid input
 | 
				
			||||||
	c.SetOutput(buf)
 | 
						c.SetOutput(buf)
 | 
				
			||||||
	cmdEcho.AddCommand(cmdTimes)
 | 
						cmdEcho.AddCommand(cmdTimes)
 | 
				
			||||||
	c.AddCommand(cmdPrint, cmdEcho, cmdSubNoRun)
 | 
						c.AddCommand(cmdPrint, cmdEcho, cmdSubNoRun, cmdDeprecated)
 | 
				
			||||||
	c.SetArgs(strings.Split(input, " "))
 | 
						c.SetArgs(strings.Split(input, " "))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := c.Execute()
 | 
						err := c.Execute()
 | 
				
			||||||
@@ -812,3 +837,52 @@ func TestReplaceCommandWithRemove(t *testing.T) {
 | 
				
			|||||||
		t.Errorf("Replacing command should have been called but didn't\n")
 | 
							t.Errorf("Replacing command should have been called but didn't\n")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestDeprecatedSub(t *testing.T) {
 | 
				
			||||||
 | 
						c := fullSetupTest("deprecated")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						checkResultContains(t, c, cmdDeprecated.Deprecated)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestPreRun(t *testing.T) {
 | 
				
			||||||
 | 
						noRRSetupTest("echo one two")
 | 
				
			||||||
 | 
						if echoPre == nil || echoPersPre == nil {
 | 
				
			||||||
 | 
							t.Error("PreRun or PersistentPreRun not called")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if rootPersPre != nil || timesPersPre != nil {
 | 
				
			||||||
 | 
							t.Error("Wrong *Pre functions called!")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						noRRSetupTest("echo times one two")
 | 
				
			||||||
 | 
						if timesPersPre == nil {
 | 
				
			||||||
 | 
							t.Error("PreRun or PersistentPreRun not called")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if echoPre != nil || echoPersPre != nil || rootPersPre != nil {
 | 
				
			||||||
 | 
							t.Error("Wrong *Pre functions called!")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						noRRSetupTest("print one two")
 | 
				
			||||||
 | 
						if rootPersPre == nil {
 | 
				
			||||||
 | 
							t.Error("Parent PersistentPreRun not called but should not have been")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if echoPre != nil || echoPersPre != nil || timesPersPre != nil {
 | 
				
			||||||
 | 
							t.Error("Wrong *Pre functions called!")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Check if cmdEchoSub gets PersistentPreRun from rootCmd even if is added last
 | 
				
			||||||
 | 
					func TestPeristentPreRunPropagation(t *testing.T) {
 | 
				
			||||||
 | 
						rootCmd := initialize()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// First add the cmdEchoSub to cmdPrint
 | 
				
			||||||
 | 
						cmdPrint.AddCommand(cmdEchoSub)
 | 
				
			||||||
 | 
						// Now add cmdPrint to rootCmd
 | 
				
			||||||
 | 
						rootCmd.AddCommand(cmdPrint)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rootCmd.SetArgs(strings.Split("print echosub lala", " "))
 | 
				
			||||||
 | 
						rootCmd.Execute()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if rootPersPre == nil || len(rootPersPre) == 0 || rootPersPre[0] != "lala" {
 | 
				
			||||||
 | 
							t.Error("RootCmd PersistentPreRun not called but should have been")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										99
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/command.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/command.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -48,15 +48,31 @@ type Command struct {
 | 
				
			|||||||
	ValidArgs []string
 | 
						ValidArgs []string
 | 
				
			||||||
	// Custom functions used by the bash autocompletion generator
 | 
						// Custom functions used by the bash autocompletion generator
 | 
				
			||||||
	BashCompletionFunction string
 | 
						BashCompletionFunction string
 | 
				
			||||||
 | 
						// Is this command deprecated and should print this string when used?
 | 
				
			||||||
 | 
						Deprecated string
 | 
				
			||||||
	// Full set of flags
 | 
						// Full set of flags
 | 
				
			||||||
	flags *flag.FlagSet
 | 
						flags *flag.FlagSet
 | 
				
			||||||
	// Set of flags childrens of this command will inherit
 | 
						// Set of flags childrens of this command will inherit
 | 
				
			||||||
	pflags *flag.FlagSet
 | 
						pflags *flag.FlagSet
 | 
				
			||||||
	// Flags that are declared specifically by this command (not inherited).
 | 
						// Flags that are declared specifically by this command (not inherited).
 | 
				
			||||||
	lflags *flag.FlagSet
 | 
						lflags *flag.FlagSet
 | 
				
			||||||
	// Run runs the command.
 | 
						// The *Run functions are executed in the following order:
 | 
				
			||||||
	// The args are the arguments after the command name.
 | 
						//   * PersistentPreRun()
 | 
				
			||||||
 | 
						//   * PreRun()
 | 
				
			||||||
 | 
						//   * Run()
 | 
				
			||||||
 | 
						//   * PostRun()
 | 
				
			||||||
 | 
						//   * PersistentPostRun()
 | 
				
			||||||
 | 
						// All functions get the same args, the arguments after the command name
 | 
				
			||||||
 | 
						// PersistentPreRun: children of this command will inherit and execute
 | 
				
			||||||
 | 
						PersistentPreRun func(cmd *Command, args []string)
 | 
				
			||||||
 | 
						// PreRun: children of this command will not inherit.
 | 
				
			||||||
 | 
						PreRun func(cmd *Command, args []string)
 | 
				
			||||||
 | 
						// Run: Typically the actual work function. Most commands will only implement this
 | 
				
			||||||
	Run func(cmd *Command, args []string)
 | 
						Run func(cmd *Command, args []string)
 | 
				
			||||||
 | 
						// PostRun: run after the Run command.
 | 
				
			||||||
 | 
						PostRun func(cmd *Command, args []string)
 | 
				
			||||||
 | 
						// PersistentPostRun: children of this command will inherit and execute after PostRun
 | 
				
			||||||
 | 
						PersistentPostRun func(cmd *Command, args []string)
 | 
				
			||||||
	// Commands is the list of commands supported by this program.
 | 
						// Commands is the list of commands supported by this program.
 | 
				
			||||||
	commands []*Command
 | 
						commands []*Command
 | 
				
			||||||
	// Parent Command for this command
 | 
						// Parent Command for this command
 | 
				
			||||||
@@ -231,7 +247,7 @@ Examples:
 | 
				
			|||||||
{{ .Example }}
 | 
					{{ .Example }}
 | 
				
			||||||
{{end}}{{ if .HasRunnableSubCommands}}
 | 
					{{end}}{{ if .HasRunnableSubCommands}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Available Commands: {{range .Commands}}{{if .Runnable}}
 | 
					Available Commands: {{range .Commands}}{{if and (.Runnable) (not .Deprecated)}}
 | 
				
			||||||
  {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}
 | 
					  {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}
 | 
				
			||||||
{{end}}
 | 
					{{end}}
 | 
				
			||||||
{{ if .HasLocalFlags}}Flags:
 | 
					{{ if .HasLocalFlags}}Flags:
 | 
				
			||||||
@@ -239,7 +255,7 @@ Available Commands: {{range .Commands}}{{if .Runnable}}
 | 
				
			|||||||
{{ if .HasInheritedFlags}}Global Flags:
 | 
					{{ if .HasInheritedFlags}}Global Flags:
 | 
				
			||||||
{{.InheritedFlags.FlagUsages}}{{end}}{{if or (.HasHelpSubCommands) (.HasRunnableSiblings)}}
 | 
					{{.InheritedFlags.FlagUsages}}{{end}}{{if or (.HasHelpSubCommands) (.HasRunnableSiblings)}}
 | 
				
			||||||
Additional help topics:
 | 
					Additional help topics:
 | 
				
			||||||
{{if .HasHelpSubCommands}}{{range .Commands}}{{if not .Runnable}} {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasRunnableSiblings }}{{range .Parent.Commands}}{{if .Runnable}}{{if not (eq .Name $cmd.Name) }}
 | 
					{{if .HasHelpSubCommands}}{{range .Commands}}{{if and (not .Runnable) (not .Deprecated)}} {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasRunnableSiblings }}{{range .Parent.Commands}}{{if and (not .Runnable) (not .Deprecated)}}{{if not (eq .Name $cmd.Name) }}
 | 
				
			||||||
  {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{end}}
 | 
					  {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{end}}
 | 
				
			||||||
{{end}}{{ if .HasSubCommands }}
 | 
					{{end}}{{ if .HasSubCommands }}
 | 
				
			||||||
Use "{{.Root.Name}} help [command]" for more information about a command.
 | 
					Use "{{.Root.Name}} help [command]" for more information about a command.
 | 
				
			||||||
@@ -414,6 +430,10 @@ func (c *Command) execute(a []string) (err error) {
 | 
				
			|||||||
		return fmt.Errorf("Called Execute() on a nil Command")
 | 
							return fmt.Errorf("Called Execute() on a nil Command")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(c.Deprecated) > 0 {
 | 
				
			||||||
 | 
							c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = c.ParseFlags(a)
 | 
						err = c.ParseFlags(a)
 | 
				
			||||||
	if err == flag.ErrHelp {
 | 
						if err == flag.ErrHelp {
 | 
				
			||||||
		c.Help()
 | 
							c.Help()
 | 
				
			||||||
@@ -432,19 +452,40 @@ func (c *Command) execute(a []string) (err error) {
 | 
				
			|||||||
		c.Usage()
 | 
							c.Usage()
 | 
				
			||||||
		r.SetOutput(out)
 | 
							r.SetOutput(out)
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	} else {
 | 
						}
 | 
				
			||||||
		// If help is called, regardless of other flags, we print that.
 | 
						// If help is called, regardless of other flags, we print that.
 | 
				
			||||||
		// Print help also if c.Run is nil.
 | 
						// Print help also if c.Run is nil.
 | 
				
			||||||
		if c.helpFlagVal || !c.Runnable() {
 | 
						if c.helpFlagVal || !c.Runnable() {
 | 
				
			||||||
			c.Help()
 | 
							c.Help()
 | 
				
			||||||
			return nil
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		c.preRun()
 | 
					 | 
				
			||||||
		argWoFlags := c.Flags().Args()
 | 
					 | 
				
			||||||
		c.Run(c, argWoFlags)
 | 
					 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.preRun()
 | 
				
			||||||
 | 
						argWoFlags := c.Flags().Args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for p := c; p != nil; p = p.Parent() {
 | 
				
			||||||
 | 
							if p.PersistentPreRun != nil {
 | 
				
			||||||
 | 
								p.PersistentPreRun(c, argWoFlags)
 | 
				
			||||||
 | 
								break
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if c.PreRun != nil {
 | 
				
			||||||
 | 
							c.PreRun(c, argWoFlags)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.Run(c, argWoFlags)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if c.PostRun != nil {
 | 
				
			||||||
 | 
							c.PostRun(c, argWoFlags)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for p := c; p != nil; p = p.Parent() {
 | 
				
			||||||
 | 
							if p.PersistentPostRun != nil {
 | 
				
			||||||
 | 
								p.PersistentPostRun(c, argWoFlags)
 | 
				
			||||||
 | 
								break
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Command) preRun() {
 | 
					func (c *Command) preRun() {
 | 
				
			||||||
@@ -495,20 +536,9 @@ func (c *Command) Execute() (err error) {
 | 
				
			|||||||
		args = c.args
 | 
							args = c.args
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(args) == 0 {
 | 
						cmd, flags, err := c.Find(args)
 | 
				
			||||||
		// Only the executable is called and the root is runnable, run it
 | 
						if err == nil {
 | 
				
			||||||
		if c.Runnable() {
 | 
							err = cmd.execute(flags)
 | 
				
			||||||
			err = c.execute([]string(nil))
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			c.Help()
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		cmd, flags, e := c.Find(args)
 | 
					 | 
				
			||||||
		if e != nil {
 | 
					 | 
				
			||||||
			err = e
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			err = cmd.execute(flags)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -535,7 +565,9 @@ func (c *Command) initHelp() {
 | 
				
			|||||||
			Short: "Help about any command",
 | 
								Short: "Help about any command",
 | 
				
			||||||
			Long: `Help provides help for any command in the application.
 | 
								Long: `Help provides help for any command in the application.
 | 
				
			||||||
    Simply type ` + c.Name() + ` help [path to command] for full details.`,
 | 
					    Simply type ` + c.Name() + ` help [path to command] for full details.`,
 | 
				
			||||||
			Run: c.HelpFunc(),
 | 
								Run:               c.HelpFunc(),
 | 
				
			||||||
 | 
								PersistentPreRun:  func(cmd *Command, args []string) {},
 | 
				
			||||||
 | 
								PersistentPostRun: func(cmd *Command, args []string) {},
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	c.AddCommand(c.helpCommand)
 | 
						c.AddCommand(c.helpCommand)
 | 
				
			||||||
@@ -948,6 +980,13 @@ func (c *Command) mergePersistentFlags() {
 | 
				
			|||||||
		c.PersistentFlags().VisitAll(addtolocal)
 | 
							c.PersistentFlags().VisitAll(addtolocal)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	rmerge = func(x *Command) {
 | 
						rmerge = func(x *Command) {
 | 
				
			||||||
 | 
							if !x.HasParent() {
 | 
				
			||||||
 | 
								flag.CommandLine.VisitAll(func(f *flag.Flag) {
 | 
				
			||||||
 | 
									if x.PersistentFlags().Lookup(f.Name) == nil {
 | 
				
			||||||
 | 
										x.PersistentFlags().AddFlag(f)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		if x.HasPersistentFlags() {
 | 
							if x.HasPersistentFlags() {
 | 
				
			||||||
			x.PersistentFlags().VisitAll(func(f *flag.Flag) {
 | 
								x.PersistentFlags().VisitAll(func(f *flag.Flag) {
 | 
				
			||||||
				if c.Flags().Lookup(f.Name) == nil {
 | 
									if c.Flags().Lookup(f.Name) == nil {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/md_docs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/md_docs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -85,6 +85,9 @@ func GenMarkdown(cmd *Command, out *bytes.Buffer) {
 | 
				
			|||||||
		sort.Sort(byName(children))
 | 
							sort.Sort(byName(children))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for _, child := range children {
 | 
							for _, child := range children {
 | 
				
			||||||
 | 
								if len(child.Deprecated) > 0 {
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			cname := name + " " + child.Name()
 | 
								cname := name + " " + child.Name()
 | 
				
			||||||
			link := cname + ".md"
 | 
								link := cname + ".md"
 | 
				
			||||||
			link = strings.Replace(link, " ", "_", -1)
 | 
								link = strings.Replace(link, " ", "_", -1)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/md_docs_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								Godeps/_workspace/src/github.com/spf13/cobra/md_docs_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,7 +14,7 @@ var _ = os.Stderr
 | 
				
			|||||||
func TestGenMdDoc(t *testing.T) {
 | 
					func TestGenMdDoc(t *testing.T) {
 | 
				
			||||||
	c := initializeWithRootCmd()
 | 
						c := initializeWithRootCmd()
 | 
				
			||||||
	// Need two commands to run the command alphabetical sort
 | 
						// Need two commands to run the command alphabetical sort
 | 
				
			||||||
	cmdEcho.AddCommand(cmdTimes, cmdEchoSub)
 | 
						cmdEcho.AddCommand(cmdTimes, cmdEchoSub, cmdDeprecated)
 | 
				
			||||||
	c.AddCommand(cmdPrint, cmdEcho)
 | 
						c.AddCommand(cmdPrint, cmdEcho)
 | 
				
			||||||
	cmdRootWithRun.PersistentFlags().StringVarP(&flags2a, "rootflag", "r", "two", strtwoParentHelp)
 | 
						cmdRootWithRun.PersistentFlags().StringVarP(&flags2a, "rootflag", "r", "two", strtwoParentHelp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,4 +59,9 @@ func TestGenMdDoc(t *testing.T) {
 | 
				
			|||||||
	if !strings.Contains(found, expected) {
 | 
						if !strings.Contains(found, expected) {
 | 
				
			||||||
		t.Errorf("Unexpected response.\nExpecting to contain: \n %q\nGot:\n %q\n", expected, found)
 | 
							t.Errorf("Unexpected response.\nExpecting to contain: \n %q\nGot:\n %q\n", expected, found)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unexpected := cmdDeprecated.Short
 | 
				
			||||||
 | 
						if strings.Contains(found, unexpected) {
 | 
				
			||||||
 | 
							t.Errorf("Unexpected response.\nFound: %v\nBut should not have!!\n", unexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
__debug()
 | 
					__debug()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
 | 
					    if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
 | 
				
			||||||
        echo "$*" >> ${BASH_COMP_DEBUG_FILE}
 | 
					        echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -75,6 +75,13 @@ __handle_reply()
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The arguments should be in the form "ext1|ext2|extn"
 | 
				
			||||||
 | 
					__handle_filename_extension_flag()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    local ext="$1"
 | 
				
			||||||
 | 
					    _filedir "@(${ext})"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__handle_flag()
 | 
					__handle_flag()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
 | 
					    __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
 | 
				
			||||||
@@ -297,10 +304,10 @@ _kubectl_create()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    flags+=("--filename=")
 | 
					    flags+=("--filename=")
 | 
				
			||||||
    flags_with_completion+=("--filename")
 | 
					    flags_with_completion+=("--filename")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    two_word_flags+=("-f")
 | 
					    two_word_flags+=("-f")
 | 
				
			||||||
    flags_with_completion+=("-f")
 | 
					    flags_with_completion+=("-f")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    flags+=("--help")
 | 
					    flags+=("--help")
 | 
				
			||||||
    flags+=("-h")
 | 
					    flags+=("-h")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -322,10 +329,10 @@ _kubectl_update()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    flags+=("--filename=")
 | 
					    flags+=("--filename=")
 | 
				
			||||||
    flags_with_completion+=("--filename")
 | 
					    flags_with_completion+=("--filename")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    two_word_flags+=("-f")
 | 
					    two_word_flags+=("-f")
 | 
				
			||||||
    flags_with_completion+=("-f")
 | 
					    flags_with_completion+=("-f")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    flags+=("--help")
 | 
					    flags+=("--help")
 | 
				
			||||||
    flags+=("-h")
 | 
					    flags+=("-h")
 | 
				
			||||||
    flags+=("--patch=")
 | 
					    flags+=("--patch=")
 | 
				
			||||||
@@ -351,10 +358,10 @@ _kubectl_delete()
 | 
				
			|||||||
    flags+=("--cascade")
 | 
					    flags+=("--cascade")
 | 
				
			||||||
    flags+=("--filename=")
 | 
					    flags+=("--filename=")
 | 
				
			||||||
    flags_with_completion+=("--filename")
 | 
					    flags_with_completion+=("--filename")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    two_word_flags+=("-f")
 | 
					    two_word_flags+=("-f")
 | 
				
			||||||
    flags_with_completion+=("-f")
 | 
					    flags_with_completion+=("-f")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    flags+=("--grace-period=")
 | 
					    flags+=("--grace-period=")
 | 
				
			||||||
    flags+=("--help")
 | 
					    flags+=("--help")
 | 
				
			||||||
    flags+=("-h")
 | 
					    flags+=("-h")
 | 
				
			||||||
@@ -575,10 +582,10 @@ _kubectl_stop()
 | 
				
			|||||||
    flags+=("--all")
 | 
					    flags+=("--all")
 | 
				
			||||||
    flags+=("--filename=")
 | 
					    flags+=("--filename=")
 | 
				
			||||||
    flags_with_completion+=("--filename")
 | 
					    flags_with_completion+=("--filename")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    two_word_flags+=("-f")
 | 
					    two_word_flags+=("-f")
 | 
				
			||||||
    flags_with_completion+=("-f")
 | 
					    flags_with_completion+=("-f")
 | 
				
			||||||
    flags_completion+=("_filedir '@(json|yaml|yml)'")
 | 
					    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
 | 
				
			||||||
    flags+=("--grace-period=")
 | 
					    flags+=("--grace-period=")
 | 
				
			||||||
    flags+=("--help")
 | 
					    flags+=("--help")
 | 
				
			||||||
    flags+=("-h")
 | 
					    flags+=("-h")
 | 
				
			||||||
@@ -942,10 +949,9 @@ _kubectl()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
__start_kubectl()
 | 
					__start_kubectl()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    local cur prev words cword split
 | 
					    local cur prev words cword
 | 
				
			||||||
    _init_completion -s || return
 | 
					    _init_completion -s || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local completions_func
 | 
					 | 
				
			||||||
    local c=0
 | 
					    local c=0
 | 
				
			||||||
    local flags=()
 | 
					    local flags=()
 | 
				
			||||||
    local two_word_flags=()
 | 
					    local two_word_flags=()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user