cobraize once, prevent parsing errors from panics
This commit is contained in:
parent
de1c898f0d
commit
d3e5afbdfc
@ -57,7 +57,11 @@ func newCobraRoot(root *command.Command) *cobra.Command {
|
|||||||
func ToCobra(cmd *command.Command, globalOptions command.Options, parent *cobra.Command) *cobra.Command {
|
func ToCobra(cmd *command.Command, globalOptions command.Options, parent *cobra.Command) *cobra.Command {
|
||||||
localName := cmd.Name()
|
localName := cmd.Name()
|
||||||
useSpec := []string{localName, "[options]"}
|
useSpec := []string{localName, "[options]"}
|
||||||
for _, arg := range cmd.Arguments {
|
for idx, arg := range cmd.Arguments {
|
||||||
|
if arg == nil {
|
||||||
|
useSpec = append(useSpec, fmt.Sprintf("could not parse spec for argument %d of command %s", idx, cmd.FullName()))
|
||||||
|
continue
|
||||||
|
}
|
||||||
useSpec = append(useSpec, arg.ToDesc())
|
useSpec = append(useSpec, arg.ToDesc())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,6 +97,10 @@ func ToCobra(cmd *command.Command, globalOptions command.Options, parent *cobra.
|
|||||||
cc.Flags().AddFlagSet(cmd.FlagSet())
|
cc.Flags().AddFlagSet(cmd.FlagSet())
|
||||||
|
|
||||||
for name, opt := range cmd.Options {
|
for name, opt := range cmd.Options {
|
||||||
|
if opt == nil {
|
||||||
|
useSpec = append(useSpec, fmt.Sprintf("could not parse spec for option %s of command %s", name, cmd.FullName()))
|
||||||
|
continue
|
||||||
|
}
|
||||||
if err := cc.RegisterFlagCompletionFunc(name, opt.CompletionFunction); err != nil {
|
if err := cc.RegisterFlagCompletionFunc(name, opt.CompletionFunction); err != nil {
|
||||||
log.Errorf("Failed setting up autocompletion for option <%s> of command <%s>", name, cmd.FullName())
|
log.Errorf("Failed setting up autocompletion for option <%s> of command <%s>", name, cmd.FullName())
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ func Execute(version string) error {
|
|||||||
container := ccRoot
|
container := ccRoot
|
||||||
for idx, cp := range cmd.Path {
|
for idx, cp := range cmd.Path {
|
||||||
if idx == len(cmd.Path)-1 {
|
if idx == len(cmd.Path)-1 {
|
||||||
if cmd.Action != nil {
|
if cmd.Action != nil && cmd.Cobra == nil {
|
||||||
// nil actions come when the current command consists only
|
// nil actions come when the current command consists only
|
||||||
// of metadata for a "group parent" command
|
// of metadata for a "group parent" command
|
||||||
// and we don't wanna cobraize it like a regular, actionable one
|
// and we don't wanna cobraize it like a regular, actionable one
|
||||||
|
Loading…
Reference in New Issue
Block a user