modulepackage
0.0.0-20180630082107-58cddc247ea2
Repository: https://github.com/voxelbrain/goptions.git
Documentation: pkg.go.dev
# README
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"
)
func main() {
options := struct {
Servers []string `goptions:"-s, --server, obligatory, description='Servers to connect to'"`
Password string `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.Verbs
Execute struct {
Command string `goptions:"--command, mutexgroup='input', description='Command to exectute', obligatory"`
Script *os.File `goptions:"--script, mutexgroup='input', description='Script to exectute', rdonly"`
} `goptions:"execute"`
Delete struct {
Path string `goptions:"-n, --name, obligatory, description='Name of the entity to be deleted'"`
Force bool `goptions:"-f, --force, description='Force removal'"`
} `goptions:"delete"`
}{ // Default values goes here
Timeout: 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
FieldName type `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:
Global Options
- description='...'
- obligatory
- mutexgroup='GROUP_NAME'
os.File specific
- create
- append
- rdonly
- wronly
- rdwr
- excl
- sync
- trunc
- perm=0777
Supported Types
- bool
- string
- float64
- float32
- int
- int64
- int32
- goptions.Help
- *os.File
- *net.TCPAddr
- *url.URL
- time.Duration
Version 2.5.11
# Packages
No description provided by the author
# Functions
DefaultHelpFunc is a HelpFunc which renders the default help template and pipes the output through a text/tabwriter.Writer before flushing it to the output.
NewFlagSet returns a new FlagSet containing all the flags which result from parsing the tags of the struct.
Generates a new HelpFunc taking a `text/template.Template`-formatted string as an argument.
Parse parses the command-line flags from os.Args[1:].
ParseAndFail is a convenience function to parse os.Args[1:] and print the help if an error occurs.
PrintHelp renders the default help to os.Stderr.
No description provided by the author
# Constants
No description provided by the author
# Variables
No description provided by the author
# Interfaces
No description provided by the author
# Type aliases
Help Defines the common help flag.
HelpFunc is the signature of a function responsible for printing the help.
A MutexGroup holds a set of flags which are mutually exclusive and cannot be specified at the same time.
A remainder catches all excessive arguments.
Verbs marks the point in the struct where the verbs start.