I’m trying to figure out whats is the difference between PersistentFlags and Flags in go-Cobra, and when should we use each of them.
I’ve read this but I didn’t understand it.
When using Cobra you define a top level command:
This top level command has sub-commands. For instance, suppose we have three sub-commands,
prog init [-i] # initialize, but don't start anything: -i means ignore prog start [-f] [-q] # after init, start: -f=fast, -q=quiet prog stop [-f] # stop: -f=force
-i flag is only for
init, so we add a
-i flag to the
-q flag is only for
start, so we add a
-q flag to the
start subcommand, and so on.
Now we’d like to add a debug mode to every command. We could go into each command and add a
--debug flag … but we can also just set a persistent flag for the root command. This persistent flag will now be available in every sub-command.
If you have a sub-command that has sub-sub-commands, you can set a persistent flag in the sub-command to make that flag appear in every sub-sub-command, and so on.
Answered By – torek
Answer Checked By – Katrina (GoLangFix Volunteer)