Quickstart Tutorial
Imagine we're building a utility for joining MP3 files.
We want the user to supply the file names as a list of command line arguments.
We also want to support an --out/-o
option so the user can specify an output filename and a --quiet/-q
flag for turning down the program's verbosity.
First we import the Argo package:
import "github.com/dmulholl/argo/v4"
Next we create an ArgParser
instance:
parser := argo.NewParser() parser.Helptext = "Usage: mp3cat..." parser.Version = "1.0"
Supplying a helptext string for the parser activates an automatic --help/-h
flag; similarly, supplying a version string activates an automatic --version/-v
flag.
Now we can register our options and flags:
parser.NewStringOption("out o", "default.mp3") parser.NewFlag("quiet q")
That's it, we're done specifying our interface. Now we can parse the program's command line arguments:
if err := parser.ParseOsArgs(); err != nil { fmt.Fprintf(os.Stderr, "error: %s\n", err) os.Exit(1) }
This will exit with a suitable error message for the user if any of the command line arguments are invaid.
Now we can check if the --quiet
flag was found:
if parser.Found("quiet") { doStuff() }
And determine our output filepath:
outpath := parser.StringValue("out")
The input filenames will be collected by the parser into a list of positional arguments — a slice of strings which we can access via the parser's .Args
field:
for _, filename := range parser.Args { doStuff() }