You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
goptions implements a flexible parser for command line options.
Key targets were the support for both long and short flag versions, mutually
exclusive flags, and verbs. Flags and their corresponding variables are defined
by the tags in a (possibly anonymous) struct.
Example
package main
import (
"github.com/voxelbrain/goptions""os""time"
)
funcmain() {
options:=struct {
Servers []string`goptions:"-s, --server, obligatory, description='Servers to connect to'"`Passwordstring`goptions:"-p, --password, description='Don\\'t prompt for password'"`Timeout time.Duration`goptions:"-t, --timeout, description='Connection timeout in seconds'"`Help goptions.Help`goptions:"-h, --help, description='Show this help'"`
goptions.VerbsExecutestruct {
Commandstring`goptions:"--command, mutexgroup='input', description='Command to exectute', obligatory"`Script*os.File`goptions:"--script, mutexgroup='input', description='Script to exectute', rdonly"`
} `goptions:"execute"`Deletestruct {
Pathstring`goptions:"-n, --name, obligatory, description='Name of the entity to be deleted'"`Forcebool`goptions:"-f, --force, description='Force removal'"`
} `goptions:"delete"`
}{ // Default values goes hereTimeout: 10*time.Second,
}
goptions.ParseAndFail(&options)
}
$ go run examples/readme_example.go --help
Usage: a.out [global options] <verb> [verb options]
Global options:
-s, --server Servers to connect to (*)
-p, --password Don't prompt for password
-t, --timeout Connection timeout in seconds (default: 10s)
-h, --help Show this help
Verbs:
delete:
-n, --name Name of the entity to be deleted (*)
-f, --force Force removal
execute:
--command Command to exectute (*)
--script Script to exectute
Quick Reference
goptions
Each field of your struct can be tagged with a goptions
FieldNametype`goptions:"-S, --long, options..."`
Where the short options (-S) are declared with a single dash and
long options (--long) are declared with two dashes. Either or
both may be declared.
After the short/long option names are one or more of the following: