I\'ve created a cobra command and added a flag:
cmd.Flags().StringVarP(&primaryIP, \"primary-ip\", \"p\", \"\", \"Help text\")
Is there a w
Late but i hope this help you !
First of all, we need to know that cobra
defines two types of flags.
Persistent flags: they will be available to the command and every sub-command under it.
Local flags: they will available only to the specific command which define them.
So cobra
provides two approaches to make flags required regarding the type of the flag.
On the init
function of your command, it could be the root
or any other command or sub-command. Lets create a cli app called my-cmd
with a sub-command called xD sub-command
// root.go file
var Foo bool
func init() {
cobra.OnInitialize(initConfig)
// define required persistent flag
myCmd.PersistentFlags().BoolVarP(&Foo, "foo", "f", false, "set foo (*)")
myCmd.MarkPersistentFlagRequired("foo")
}
// subCommand.go file
var Bar string
func init() {
// just add subCmd as a sub-command of my-cmd
myCmd.AddCommand(subCmd)
// define required local flag
subCmd.Flags().StringVarP(&Bar, "bar", "b", "", "set bar (*)")
subCmd.MarkFlagRequired("bar")
}
When you call your command in the CLI
# if you don't pass a value for 'foo' flag
> my-cmd
required flag(s) "foo" not set
exit status 1
# here you must pass a value for 'foo' because is persistent as well as 'bar' because is local for sub-cmd
> my-cmd sub-cmd
required flag(s) "foo", "bar" not set
exit status 1