Argonaut
An argument parser for Rust, that grants as much control over the parser as possible.
Example
This can be found in examples/main.rs as well, and be run with cargo run --example main
.
extern crate argonaut;
use argonaut::{Parser, Arg};
use argonaut::ParseStatus::{Parsed, Interrupted};
use std::env;
fn main() {
println!("Argonaut!");
let arg_vec: Vec<_> = env::args().skip(1).collect();
let mut args: Vec<&str> = Vec::new();
for arg in arg_vec.iter() {
args.push(arg);
}
println!("Args: {:?}", args);
let mut parser = Parser::new();
let foo = Arg::positional("foo");
let bar = Arg::required_trail("bar");
let help = Arg::short_and_long('h', "help").interrupt_flag();
let version = Arg::long("version").interrupt_flag();
let verbose = Arg::short_and_long('v', "verbose").flag();
let exclude = Arg::short_and_long('x', "exclude").single(Some("foo"));
let extra = Arg::short('e').zero_or_more(None);
let add = Arg::short_and_long('a', "add").one_or_more(None);
parser.add(&foo).unwrap();
parser.add(&bar).unwrap();
parser.add(&help).unwrap();
parser.add(&version).unwrap();
parser.add(&verbose).unwrap();
parser.add(&exclude).unwrap();
parser.add(&extra).unwrap();
parser.add(&add).unwrap();
match parser.parse(&args) {
Ok(Parsed(parsed)) => {
println!("Parsed succesfully!");
println!("Foo: {}", parsed.positional(0).unwrap());
println!("Bar: {:?}", parsed.trail(1).unwrap());
println!("Verbose: {}", parsed.long("verbose").switch().unwrap());
println!("Exclude: {:?}", parsed.short('x').single().unwrap());
println!("Extra: {:?}", parsed.short('e').multiple().unwrap());
println!("Add: {:?}", parsed.long("add").multiple().unwrap());
},
Ok(Interrupted(flag)) => {
println!("Interrupt flag!");
if flag.is_short('h') {
println!("Help requested!");
} else if flag.is_long("version") {
println!("Version ZERO POINT ZERO!");
}
}
Err(error) => {
println!("Parse error: {:?}", error);
},
}
}
Terminology
Flag: The identifying token for an argument (--flag)
Switch: A flag with no arguments that is either there or not there
Parameter: Tokens following an argument.
Trail: Zero or more tokens that follow the required positional arguments.
License
MIT