Qual è la differenza tra go-Cobra PersistentFlags e Flags?

Aug 20 2020

Sto cercando di capire qual è la differenza tra PersistentFlags e Flags in go-Cobra e quando dovremmo usarli ciascuno. Ho letto questo ma non l'ho capito.

Risposte

3 torek Aug 20 2020 at 11:48

Quando si utilizza Cobra si definisce un comando di livello superiore:

prog

Questo comando di primo livello ha sottocomandi. Per esempio, supponiamo di avere tre sottocomandi, init, start, e 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

Il -iflag è solo per init, quindi aggiungiamo un -iflag al initsottocomando.

Il -qflag è solo per start, quindi aggiungiamo un -qflag al startsottocomando e così via.

Ora vorremmo aggiungere una modalità di debug a ogni comando. Potremmo entrare in ogni comando e aggiungere un --debugflag... ma possiamo anche solo impostare un flag persistente per il comando root. Questo flag persistente sarà ora disponibile in ogni sottocomando.

Se hai un sottocomando che ha sottocomandi secondari, puoi impostare un flag persistente nel sottocomando per far apparire quel flag in ogni sottocomando secondario e così via.