Provide option to hide default 'completion' cmd (#1541)
Fixes #1507 Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
This commit is contained in:
		@ -93,6 +93,8 @@ type CompletionOptions struct {
 | 
			
		||||
	// DisableDescriptions turns off all completion descriptions for shells
 | 
			
		||||
	// that support them
 | 
			
		||||
	DisableDescriptions bool
 | 
			
		||||
	// HiddenDefaultCmd makes the default 'completion' command hidden
 | 
			
		||||
	HiddenDefaultCmd bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NoFileCompletions can be used to disable file completion for commands that should
 | 
			
		||||
@ -605,6 +607,7 @@ See each sub-command's help for details on how to use the generated script.
 | 
			
		||||
`, c.Root().Name()),
 | 
			
		||||
		Args:              NoArgs,
 | 
			
		||||
		ValidArgsFunction: NoFileCompletions,
 | 
			
		||||
		Hidden:            c.CompletionOptions.HiddenDefaultCmd,
 | 
			
		||||
	}
 | 
			
		||||
	c.AddCommand(completionCmd)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2398,6 +2398,21 @@ func TestDefaultCompletionCmd(t *testing.T) {
 | 
			
		||||
	rootCmd.CompletionOptions.DisableDescriptions = false
 | 
			
		||||
	// Remove completion command for the next test
 | 
			
		||||
	removeCompCmd(rootCmd)
 | 
			
		||||
 | 
			
		||||
	// Test that the 'completion' command can be hidden
 | 
			
		||||
	rootCmd.CompletionOptions.HiddenDefaultCmd = true
 | 
			
		||||
	assertNoErr(t, rootCmd.Execute())
 | 
			
		||||
	compCmd, _, err = rootCmd.Find([]string{compCmdName})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Errorf("Unexpected error: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	if compCmd.Hidden == false {
 | 
			
		||||
		t.Error("Default 'completion' command should be hidden but it is not")
 | 
			
		||||
	}
 | 
			
		||||
	// Re-enable for next test
 | 
			
		||||
	rootCmd.CompletionOptions.HiddenDefaultCmd = false
 | 
			
		||||
	// Remove completion command for the next test
 | 
			
		||||
	removeCompCmd(rootCmd)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestCompleteCompletion(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user