14 releases (6 breaking)
0.7.2 | Nov 25, 2024 |
---|---|
0.7.1 | Nov 23, 2024 |
0.6.0 | Nov 21, 2024 |
0.5.1 | Nov 21, 2024 |
0.1.2 | Jul 23, 2023 |
#461 in Command-line interface
1,093 downloads per month
18KB
232 lines
argsyn
, an Argument Parser for GNU-style Syntax
This crate provides a complete implementation of GNU-style argument parsing as described at
https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
Arguments are converted into basics, flags, pairs, and a few other types according to the GNU-style.
Here is a visual example of how a sequence of arguments is converted with "xy"
specified as short pairs:
$ program arg1 -abcx12 -y 3 --long --key=value - arg2 -- -kh --ignore
| | |||| | | | | | | | |
Basic(program)|||| | | | | | | Basic(-kh)
Basic(arg1) | | | | | | Basic(--ignore)
Flag(a) | | | | | |
Flag(b)| | | | | |
Flag(c) | | | | |
Pair(x,12) | | | | |
Pair(y,3) | | | |
Flag(long) | | |
Pair(key,value) |
Stdin |
Basic(arg2)
Done
In Rust, to print all arguments parsed, it is as simple as:
for opt in std::env::args().opts("xy").unwrap() {
println!("{:?}", opt.simplify());
}
Dependencies
~240–690KB
~16K SLoC