2014-05-18 16 views
24

È possibile personalizzare il pacchetto flag di Go in modo da stampare una stringa di utilizzo personalizzata? Ho un'applicazione con uscita in correnteL'uso della stampa del pacchetto `flag` di Can Go?

Usage of ./mysqlcsvdump: 
    -compress-file=false: whether compress connection or not 
    -hostname="": database host 
    -outdir="": where output will be stored 
    -password="": database password 
    -port=3306: database port 
    -single-transaction=true: whether to wrap everything in a transaction or not. 
    -skip-header=false: whether column header should be included or not 
    -user="root": database user 

e preferirei avere qualcosa di simile

Usage: ./mysqlcsvdump [options] [table1 table2 ... tableN] 

Parameters: 
    -compress-file=false: whether compress connection or not 
    -hostname="": database host 
    -outdir="": where output will be stored 
    -password="": database password 
    -port=3306: database port 
    -single-transaction=true: whether to wrap everything in a transaction or not. 
    -skip-header=false: whether column header should be included or not 
    -user="root": database user 
+2

Personalmente mi piace questo pacchetto modo più che le bandiere standard, è molto più robusto e più in linea con altre lingue: https://github.com/jessevdk/go-flags. Dovresti fare un tentativo. –

+1

Plug vergognoso: e un altro pacchetto "process line processor" per Go: https://github.com/speedata/optionparser – topskip

+3

@topskip l'abbondanza di grandi parser alternativi da riga di comando in Go, evidenzia quanto manca il parser standard, purtroppo. –

risposta

37

Sì, è possibile farlo modificando flag.Usage:

var Usage = func() { 
     fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) 
     PrintDefaults() 
} 

stampe di utilizzo a livello errore un messaggio di utilizzo che documenta tutti i flag della riga di comando definiti . La funzione è una variabile che può essere modificata in in una funzione personalizzata.

Esempio di utilizzo al di fuori di flag:

flag.Usage = func() { 
    fmt.Fprintf(os.Stderr, "This is not helpful.\n") 
} 
+0

Grande! Grazie!! – Ztyx

Problemi correlati