mirror of https://github.com/docker/cli.git
Merge pull request #708 from dnephin/update-cobra
Update spf13/cobra, fixes usages in generated man pages
This commit is contained in:
commit
2d0e2d22ca
|
@ -34,6 +34,7 @@ func generateManPages(opts *options) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.DisableAutoGenTag = true
|
cmd.DisableAutoGenTag = true
|
||||||
|
cmd.DisableFlagsInUseLine = true
|
||||||
return doc.GenManTreeFromOpts(cmd, doc.GenManTreeOptions{
|
return doc.GenManTreeFromOpts(cmd, doc.GenManTreeOptions{
|
||||||
Header: header,
|
Header: header,
|
||||||
Path: opts.target,
|
Path: opts.target,
|
||||||
|
@ -43,6 +44,7 @@ func generateManPages(opts *options) error {
|
||||||
|
|
||||||
func loadLongDescription(cmd *cobra.Command, path string) error {
|
func loadLongDescription(cmd *cobra.Command, path string) error {
|
||||||
for _, cmd := range cmd.Commands() {
|
for _, cmd := range cmd.Commands() {
|
||||||
|
cmd.DisableFlagsInUseLine = true
|
||||||
if cmd.Name() == "" {
|
if cmd.Name() == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ github.com/pmezard/go-difflib v1.0.0
|
||||||
github.com/russross/blackfriday 1d6b8e9301e720b08a8938b8c25c018285885438
|
github.com/russross/blackfriday 1d6b8e9301e720b08a8938b8c25c018285885438
|
||||||
github.com/shurcooL/sanitized_anchor_name 10ef21a441db47d8b13ebcc5fd2310f636973c77
|
github.com/shurcooL/sanitized_anchor_name 10ef21a441db47d8b13ebcc5fd2310f636973c77
|
||||||
github.com/sirupsen/logrus v1.0.3
|
github.com/sirupsen/logrus v1.0.3
|
||||||
github.com/spf13/cobra 7b2c5ac9fc04fc5efafb60700713d4fa609b777b
|
github.com/spf13/cobra 34ceca591bcf34a17a8b7bad5b3ce5f9c165bee5
|
||||||
github.com/spf13/pflag 97afa5e7ca8a08a383cb259e06636b5e2cc7897f
|
github.com/spf13/pflag 97afa5e7ca8a08a383cb259e06636b5e2cc7897f
|
||||||
github.com/stretchr/testify 4d4bfba8f1d1027c4fdbe371823030df51419987
|
github.com/stretchr/testify 4d4bfba8f1d1027c4fdbe371823030df51419987
|
||||||
github.com/theupdateframework/notary 05985dc5d1c71ee6c387e9cd276a00b9d424af53
|
github.com/theupdateframework/notary 05985dc5d1c71ee6c387e9cd276a00b9d424af53
|
||||||
|
|
|
@ -224,10 +224,6 @@ func init() {
|
||||||
viper.SetDefault("license", "apache")
|
viper.SetDefault("license", "apache")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Execute() {
|
|
||||||
RootCmd.Execute()
|
|
||||||
}
|
|
||||||
|
|
||||||
func initConfig() {
|
func initConfig() {
|
||||||
// Don't forget to read config either from cfgFile or from home directory!
|
// Don't forget to read config either from cfgFile or from home directory!
|
||||||
if cfgFile != "" {
|
if cfgFile != "" {
|
||||||
|
@ -522,7 +518,7 @@ around it. In fact, you can provide your own if you want.
|
||||||
### Defining your own help
|
### Defining your own help
|
||||||
|
|
||||||
You can provide your own Help command or your own template for the default command to use
|
You can provide your own Help command or your own template for the default command to use
|
||||||
with followind functions:
|
with following functions:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
cmd.SetHelpCommand(cmd *Command)
|
cmd.SetHelpCommand(cmd *Command)
|
||||||
|
|
|
@ -16,14 +16,14 @@ func legacyArgs(cmd *Command, args []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// root command with subcommands, do subcommand checking
|
// root command with subcommands, do subcommand checking.
|
||||||
if !cmd.HasParent() && len(args) > 0 {
|
if !cmd.HasParent() && len(args) > 0 {
|
||||||
return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0]))
|
return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0]))
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NoArgs returns an error if any args are included
|
// NoArgs returns an error if any args are included.
|
||||||
func NoArgs(cmd *Command, args []string) error {
|
func NoArgs(cmd *Command, args []string) error {
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath())
|
return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath())
|
||||||
|
@ -31,7 +31,7 @@ func NoArgs(cmd *Command, args []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnlyValidArgs returns an error if any args are not in the list of ValidArgs
|
// OnlyValidArgs returns an error if any args are not in the list of ValidArgs.
|
||||||
func OnlyValidArgs(cmd *Command, args []string) error {
|
func OnlyValidArgs(cmd *Command, args []string) error {
|
||||||
if len(cmd.ValidArgs) > 0 {
|
if len(cmd.ValidArgs) > 0 {
|
||||||
for _, v := range args {
|
for _, v := range args {
|
||||||
|
@ -43,21 +43,12 @@ func OnlyValidArgs(cmd *Command, args []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func stringInSlice(a string, list []string) bool {
|
// ArbitraryArgs never returns an error.
|
||||||
for _, b := range list {
|
|
||||||
if b == a {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// ArbitraryArgs never returns an error
|
|
||||||
func ArbitraryArgs(cmd *Command, args []string) error {
|
func ArbitraryArgs(cmd *Command, args []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MinimumNArgs returns an error if there is not at least N args
|
// MinimumNArgs returns an error if there is not at least N args.
|
||||||
func MinimumNArgs(n int) PositionalArgs {
|
func MinimumNArgs(n int) PositionalArgs {
|
||||||
return func(cmd *Command, args []string) error {
|
return func(cmd *Command, args []string) error {
|
||||||
if len(args) < n {
|
if len(args) < n {
|
||||||
|
@ -67,7 +58,7 @@ func MinimumNArgs(n int) PositionalArgs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MaximumNArgs returns an error if there are more than N args
|
// MaximumNArgs returns an error if there are more than N args.
|
||||||
func MaximumNArgs(n int) PositionalArgs {
|
func MaximumNArgs(n int) PositionalArgs {
|
||||||
return func(cmd *Command, args []string) error {
|
return func(cmd *Command, args []string) error {
|
||||||
if len(args) > n {
|
if len(args) > n {
|
||||||
|
@ -77,7 +68,7 @@ func MaximumNArgs(n int) PositionalArgs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExactArgs returns an error if there are not exactly n args
|
// ExactArgs returns an error if there are not exactly n args.
|
||||||
func ExactArgs(n int) PositionalArgs {
|
func ExactArgs(n int) PositionalArgs {
|
||||||
return func(cmd *Command, args []string) error {
|
return func(cmd *Command, args []string) error {
|
||||||
if len(args) != n {
|
if len(args) != n {
|
||||||
|
@ -87,7 +78,7 @@ func ExactArgs(n int) PositionalArgs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RangeArgs returns an error if the number of args is not within the expected range
|
// RangeArgs returns an error if the number of args is not within the expected range.
|
||||||
func RangeArgs(min int, max int) PositionalArgs {
|
func RangeArgs(min int, max int) PositionalArgs {
|
||||||
return func(cmd *Command, args []string) error {
|
return func(cmd *Command, args []string) error {
|
||||||
if len(args) < min || len(args) > max {
|
if len(args) < min || len(args) > max {
|
||||||
|
|
|
@ -188,3 +188,12 @@ func ld(s, t string, ignoreCase bool) int {
|
||||||
}
|
}
|
||||||
return d[len(s)][len(t)]
|
return d[len(s)][len(t)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func stringInSlice(a string, list []string) bool {
|
||||||
|
for _, b := range list {
|
||||||
|
if b == a {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
|
@ -118,6 +118,10 @@ type Command struct {
|
||||||
// will be printed by generating docs for this command.
|
// will be printed by generating docs for this command.
|
||||||
DisableAutoGenTag bool
|
DisableAutoGenTag bool
|
||||||
|
|
||||||
|
// DisableFlagsInUseLine will disable the addition of [flags] to the usage
|
||||||
|
// line of a command when printing help or generating docs
|
||||||
|
DisableFlagsInUseLine bool
|
||||||
|
|
||||||
// DisableSuggestions disables the suggestions based on Levenshtein distance
|
// DisableSuggestions disables the suggestions based on Levenshtein distance
|
||||||
// that go along with 'unknown command' messages.
|
// that go along with 'unknown command' messages.
|
||||||
DisableSuggestions bool
|
DisableSuggestions bool
|
||||||
|
@ -621,10 +625,8 @@ func (c *Command) Root() *Command {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
// ArgsLenAtDash will return the length of f.Args at the moment when a -- was
|
// ArgsLenAtDash will return the length of c.Flags().Args at the moment
|
||||||
// found during arg parsing. This allows your program to know which args were
|
// when a -- was found during args parsing.
|
||||||
// before the -- and which came after. (Description from
|
|
||||||
// https://godoc.org/github.com/spf13/pflag#FlagSet.ArgsLenAtDash).
|
|
||||||
func (c *Command) ArgsLenAtDash() int {
|
func (c *Command) ArgsLenAtDash() int {
|
||||||
return c.Flags().ArgsLenAtDash()
|
return c.Flags().ArgsLenAtDash()
|
||||||
}
|
}
|
||||||
|
@ -877,7 +879,7 @@ Simply type ` + c.Name() + ` help [path to command] for full details.`,
|
||||||
c.AddCommand(c.helpCommand)
|
c.AddCommand(c.helpCommand)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResetCommands used for testing.
|
// ResetCommands delete parent, subcommand and help command from c.
|
||||||
func (c *Command) ResetCommands() {
|
func (c *Command) ResetCommands() {
|
||||||
c.parent = nil
|
c.parent = nil
|
||||||
c.commands = nil
|
c.commands = nil
|
||||||
|
@ -996,6 +998,9 @@ func (c *Command) UseLine() string {
|
||||||
} else {
|
} else {
|
||||||
useline = c.Use
|
useline = c.Use
|
||||||
}
|
}
|
||||||
|
if c.DisableFlagsInUseLine {
|
||||||
|
return useline
|
||||||
|
}
|
||||||
if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") {
|
if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") {
|
||||||
useline += " [flags]"
|
useline += " [flags]"
|
||||||
}
|
}
|
||||||
|
@ -1163,7 +1168,7 @@ func (c *Command) HasAvailableSubCommands() bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// the command either has no sub comamnds, or no available (non deprecated/help/hidden)
|
// the command either has no sub commands, or no available (non deprecated/help/hidden)
|
||||||
// sub commands
|
// sub commands
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -1273,7 +1278,7 @@ func (c *Command) PersistentFlags() *flag.FlagSet {
|
||||||
return c.pflags
|
return c.pflags
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResetFlags is used in testing.
|
// ResetFlags deletes all flags from command.
|
||||||
func (c *Command) ResetFlags() {
|
func (c *Command) ResetFlags() {
|
||||||
c.flagErrorBuf = new(bytes.Buffer)
|
c.flagErrorBuf = new(bytes.Buffer)
|
||||||
c.flagErrorBuf.Reset()
|
c.flagErrorBuf.Reset()
|
||||||
|
|
Loading…
Reference in New Issue