-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Started working on Unified API for the various shell completions:
- Moved some general function to a more generic shell_completions file. - Added functions to mark flag as directory completion. - Started making the global functions docs more generic (not bash specific) and added compatibility matrix.
- Loading branch information
1 parent
601d830
commit e2c45ac
Showing
4 changed files
with
114 additions
and
56 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
package cobra | ||
|
||
import ( | ||
"github.com/spf13/pflag" | ||
) | ||
|
||
// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, | ||
// and causes your command to report an error if invoked without the flag. | ||
func (c *Command) MarkFlagRequired(name string) error { | ||
return MarkFlagRequired(c.Flags(), name) | ||
} | ||
|
||
// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag if it exists, | ||
// and causes your command to report an error if invoked without the flag. | ||
func (c *Command) MarkPersistentFlagRequired(name string) error { | ||
return MarkFlagRequired(c.PersistentFlags(), name) | ||
} | ||
|
||
// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, | ||
// and causes your command to report an error if invoked without the flag. | ||
func MarkFlagRequired(flags *pflag.FlagSet, name string) error { | ||
return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) | ||
} | ||
|
||
// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag, if it exists. | ||
// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. | ||
func (c *Command) MarkFlagFilename(name string, extensions ...string) error { | ||
return MarkFlagFilename(c.Flags(), name, extensions...) | ||
} | ||
|
||
// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. | ||
// Generated bash autocompletion will call the bash function f for the flag. | ||
func (c *Command) MarkFlagCustom(name string, f string) error { | ||
return MarkFlagCustom(c.Flags(), name, f) | ||
} | ||
|
||
// MarkPersistentFlagFilename instructs the various shell completion | ||
// implementations to limit completions for this persistent flag to the | ||
// specified extensions (patterns). | ||
// | ||
// Shell Completion compatibility matrix: bash, zsh | ||
func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { | ||
return MarkFlagFilename(c.PersistentFlags(), name, extensions...) | ||
} | ||
|
||
// MarkFlagFilename instructs the various shell completion implementations to | ||
// limit completions for this flag to the specified extensions (patterns). | ||
// | ||
// Shell Completion compatibility matrix: bash, zsh | ||
func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { | ||
return flags.SetAnnotation(name, BashCompFilenameExt, extensions) | ||
} | ||
|
||
// MarkFlagCustom instructs the various shell completion implementations to | ||
// limit completions for this flag to the specified extensions (patterns). | ||
// | ||
// Shell Completion compatibility matrix: bash, zsh | ||
func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { | ||
return flags.SetAnnotation(name, BashCompCustom, []string{f}) | ||
} | ||
|
||
// MarkFlagDirname instructs the various shell completion implementations to | ||
// complete only directories with this named flag. | ||
// | ||
// Shell Completion compatibility matrix: zsh | ||
func (c *Command) MarkFlagDirname(name string) error { | ||
return MarkFlagDirname(c.Flags(), name) | ||
} | ||
|
||
// MarkPersistentFlagDirname instructs the various shell completion | ||
// implementations to complete only directories with this persistent named flag. | ||
// | ||
// Shell Completion compatibility matrix: zsh | ||
func (c *Command) MarkPersistentFlagDirname(name string) error { | ||
return MarkFlagDirname(c.PersistentFlags(), name) | ||
} | ||
|
||
// MarkFlagDirname instructs the various shell completion implementations to | ||
// complete only directories with this specified flag. | ||
// | ||
// Shell Completion compatibility matrix: zsh | ||
func MarkFlagDirname(flags *pflag.FlagSet, name string) error { | ||
zshPattern := "-(/)" | ||
return flags.SetAnnotation(name, zshCompDirname, []string{zshPattern}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters