Process command line arguments.
The getopt modules provides functions that make handling command line options easy.
The basic approach is to call getopt functions with the args parameter, a flag description,
and a parameter that determines what getopt will do if it finds a matching parameter.
Matching parameters are removed from the given args array.
getopt(ref args, "help|h", delegateThatPrintsUsage);
getopt(ref args, "verbose|v", out booleanVariable);
The flag description format is simple. It's just the flag name:
"help"
You can add aliases to the same flag by separating them with a |:
"help|usage|?|h"
Single character flags can be preceded by a a single dash.
If a flag takes an argument, it can be specified multiple ways. A value
can be separated from the flag by =, or whitespace.
If the flag is a single character, the value can be bundled together:
-i32
Code Map
//! Process command line arguments.
module watt.text.getopt;
//! Thrown when arguments are in error.
class GetoptException : Exception
{
public:
this(msg: string) { }
}
//! Parse a flag taking a string argument from an array of strings.
fn getopt(args: string[], description: string, _string: string) bool { }
//! Parse a flag taking multiple string argument from an array of strings.
fn getopt(args: string[], description: string, strings: string[]) bool { }
//! Parse a flag that takes an integer argument from an array of strings.
fn getopt(args: string[], description: string, _int: i32) bool { }
//! Handle a simple boolean flag.
fn getopt(args: string[], description: string, _bool: bool) bool { }
//! Calls a delegate each time the flag appears.
fn getopt(args: string[], description: string, dgt: scope (void delegate())) bool { }
//! Calls a delegate with argument each time the flag appears.
fn getopt(args: string[], description: string, dgt: scope (void delegate(string))) bool { }
//! Get the first flag in an array of strings.
fn remainingOptions(args: string[]) string { }
Thrown when arguments are in error.
Parse a flag taking a string argument from an array of strings.
If a flag (described in description, separated by | characters) shows up in args[1 .. $], an argument is parsed
and put into _string. Both the flag and argument are then removed from args.
If there are multiple instances of the flag, _string will have the value of the last
instance.
Example:
args := ["--fruit", "apple", "--fruit", "banana", "--fruit", "pear"]
fruit: string;
getopt(ref args, "fruit", ref fruit);
assert(fruit == "pear");
Parameters
| args |
The array of strings to remove applicable flags and arguments from. |
| description |
The description of the flag -- see |
| _string |
This argument will be filled with the last value parsed out of |
Return
true if an argument was removed from args.
Parse a flag taking multiple string argument from an array of strings.
If a flag (described in description, separated by | characters) shows up in args[1 .. $], an argument is parsed
and put into strings. Both the flag and argument are then removed from args. If there are multiple instances
of the flag, then strings will contain all given arguments, in the order they appeared.
Example:
args := ["--fruit", "apple", "--fruit", "banana", "--fruit", "pear"]
fruits: string[];
getopt(ref args, "fruit", ref fruit);
assert(fruits == ["apple", "banana", "pear"]);
Parameters
| args |
The array of strings to remove applicable flags and arguments from. |
| description |
The description of the flag -- see |
| strings |
This argument will be filled with the arguments of the flag value parsed out of |
Return
true if an argument was removed from args.
Parse a flag that takes an integer argument from an array of strings.
Parameters
| args |
The array of strings to remove flags and arguments from. |
| description |
The description of the flag -- see |
| _int |
This argument will be filled with the last value parsed out of |
Return
true if an argument was removed from args.
Throws
-
GetoptExceptionif the argument could not be parsed as an integer.
Handle a simple boolean flag.
Given an array of strings, args, and a list of strings separated by a | character, description,
remove any strings in args[1 .. $] that start with '-' and contain any of the description strings.
Sets _bool to true if args was modified, and returns the same value.
Calls a delegate each time the flag appears.
The found flags are removed from args.
Return
true if anything was removed from args.
Calls a delegate with argument each time the flag appears.
The flag and arguments are removed from the args array.
Return
true if anything was removed from args.
Get the first flag in an array of strings.
Gets the first element in args[1 .. $] that starts with a -, or an empty string otherwise.
This is intended for error handling purposes:
auto flag = remainingOptions(args);
if (flag.length > 0) {
writefln("error, unknown flag '%s'", flag);
}