Skip to content

rsc/getopt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

rsc.io/getopt

[For full package documentation, see https://godoc.org/rsc.io/getopt.]

package getopt // import "rsc.io/getopt"

Package getopt parses command lines using getopt(3) syntax. It is a replacement for flag.Parse but still expects flags themselves to be defined in package flag.

Flags defined with one-letter names are available as short flags (invoked using one dash, as in -x) and all flags are available as long flags (invoked using two dashes, as in --x or --xylophone).

To use, define flags as usual with package flag. Then introduce any aliases by calling getopt.Alias:

getopt.Alias("v", "verbose")

Or call getopt.Aliases to define a list of aliases:

getopt.Aliases(
	"v", "verbose",
	"x", "xylophone",
)

One name in each pair must already be defined in package flag (so either "v" or "verbose", and also either "x" or "xylophone").

Then parse the command-line:

getopt.Parse()

If it encounters an error, Parse calls flag.Usage and then exits the program.

When writing a custom flag.Usage function, call getopt.PrintDefaults instead of flag.PrintDefaults to get a usage message that includes the names of aliases in flag descriptions.

At initialization time, package getopt installs a new flag.Usage that is the same as the default flag.Usage except that it calls getopt.PrintDefaults instead of flag.PrintDefaults.

This package also defines a FlagSet wrapping the standard flag.FlagSet.

Caveat

In general Go flag parsing is preferred for new programs, because it is not as pedantic about the number of dashes used to invoke a flag (you can write -verbose or --verbose and the program does not care). This package is meant to be used in situations where, for legacy reasons, it is important to use exactly getopt(3) syntax, such as when rewriting in Go an existing tool that already uses getopt(3).

About

getopt(3)-style Go flag parser

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages