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
},
}