yafp is a non-POSIX cli flag parser with imperative style flag declaration instead of the usual declarative style.
Features:
- Help generation.
- Imperative flag declaration with usage text.
- Supports boolean flags,
false
by default andtrue
if set. - Supports required and optional value flags.
- Values parsed to assigned variable type.
Limitations:
- Only supports short flag style.
- Does not support flag combination, for example,
-fd
is not-f
and-d
and is instead a single flag. - Non-UTF8 arguments are not supported.
use yafp::Parser;
fn main() {
let mut parser = Parser::from_env();
// Declare flags.
parser.bool_flag("verbose", "this is used to get verbose output");
parser.required_flag("url", "this is a required flag");
parser.required_flag("workers", "this is an optional flag");
// finalize() must be called before accessing arguments.
// Unbound args are returned if any.
//
// An error is returned if there is a parsing error.
let result = parser.finalize();
let remaining = match result {
Ok(remaining) => remaining,
Err(e) => {
println!("{}: {}", parser.command, e);
exit(1);
}
};
// yafp parses values to the correct type.
let verbose: bool = parser.get_value("verbose").unwrap();
//...
}
MIT