MarkFlagRequired в кобре, кажется, не имеет никакого эффекта

Я пытаюсь добавить обязательный флаг в кобру, и у меня есть пример кода ниже.

package commands

import (
"github.com/spf13/cobra"
)

var sampleCommand = &cobra.Command{
   Use: "sample",
   Run: func(ccmd *cobra.Command, args []string) {
       fmt.Println("Hello World")
   },
}

func init() {
    sampleCommand.Flags().StringP("something", "s", "", "something")
    sampleCommand.MarkFlagRequired("something")
}

И я проверяю это

func TestSomething(t *testing.T) {
    err := sampleCommand.Execute()
    if err != nil {
       t.Fail()
    }
 }

И я не вижу никаких ошибок. Я что-то пропустил?

РЕДАКТИРОВАТЬ:

Я использовал более раннюю версию кобры, которая, вероятно, имела эту ошибку. Я обновился до HEAD и больше не вижу этой проблемы.

2 ответа

Я использовал более старую версию кобры, которая, вероятно, имела эту проблему. В последней версии его больше нет.

Вы не получили никакой ошибки, потому что ваш simpleCommand не работает Команда работает, если выполняется следующее (ref: here):

// Runnable determines if the command is itself runnable.
func (c *Command) Runnable() bool {
    return c.Run != nil || c.RunE != nil
}

Как твой simpleCommand не определяет какой-либо Run или же RunE, ваша команда не работает, и поэтому вы не получили никакой ошибки. определять Run или же RunE, вы получите необходимую ошибку флага.

var sampleCommand = &cobra.Command{
    Use: "sample",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("here")
        return
    },
}
Другие вопросы по тегам