¿Cuál es la diferencia entre go-Cobra PersistentFlags y Flags?

Aug 20 2020

Estoy tratando de averiguar cuál es la diferencia entre PersistentFlags y Flags en go-Cobra, y cuándo deberíamos usar cada uno de ellos. He leído esto pero no lo entendí.

Respuestas

3 torek Aug 20 2020 at 11:48

Al usar Cobra, define un comando de nivel superior:

prog

Este comando de nivel superior tiene subcomandos. Por ejemplo, supongamos que tenemos tres subcomandos init, start, y 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

El -iindicador es solo para init, por lo que agregamos un -iindicador al initsubcomando.

El -qindicador es solo para start, por lo que agregamos un -qindicador al startsubcomando, y así sucesivamente.

Ahora nos gustaría agregar un modo de depuración a cada comando. Podríamos ingresar a cada comando y agregar una --debugbandera... pero también podemos configurar una bandera persistente para el comando raíz. Esta bandera persistente ahora estará disponible en cada subcomando.

Si tiene un subcomando que tiene subcomandos secundarios, puede configurar un indicador persistente en el subcomando para que ese indicador aparezca en cada subcomando secundario, y así sucesivamente.