Qual é a diferença entre Go-Cobra PersistentFlags e Flags?

Aug 20 2020

Estou tentando descobrir qual é a diferença entre PersistentFlags e Flags no go-Cobra e quando devemos usar cada um deles. Eu li isso , mas não entendi.

Respostas

3 torek Aug 20 2020 at 11:48

Ao usar o Cobra, você define um comando de nível superior:

prog

Este comando de nível superior possui subcomandos. Por exemplo, suponha que temos três subcomandos, init, starte stop.

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

O -isinalizador é apenas para init, então adicionamos um -isinalizador ao initsubcomando.

O -qsinalizador é apenas para start, então adicionamos um -qsinalizador ao startsubcomando e assim por diante.

Agora gostaríamos de adicionar um modo de depuração a cada comando. Poderíamos entrar em cada comando e adicionar um --debugsinalizador... mas também podemos apenas definir um sinalizador persistente para o comando root. Este sinalizador persistente agora estará disponível em todos os subcomandos.

Se você tiver um subcomando com sub-sub-comandos, poderá definir um sinalizador persistente no subcomando para fazer com que esse sinalizador apareça em cada sub-sub-comando e assim por diante.