01/
01.rs

1use std::{path::PathBuf, ops::Range};
2use flager::{Flag, Parser, NArgs, new_flag};
3
4const I32_FLAG: Flag::<i32> = new_flag!("-f", "--flag")
5    .mandatory()
6    .help("A mandatory integer flag");
7
8const MULTI_ARGS_RANGE_FLAG: Flag::<Range::<usize>> = new_flag!("-r", "--range")
9    .help("Multiple arguments");
10
11fn main() {
12    let parser = Parser::new();
13
14    let path_flag: Flag::<PathBuf> = new_flag!("-p", "--path", "default/path".into())
15        .help("An optional path flag");
16
17    let multi_args_flag: Flag::<String> = new_flag!("-a", "--args")
18        .help("Multiple arguments");
19
20    println!("Flag: {value}", value = parser.parse(&I32_FLAG).unwrap());
21    println!("Path: {path:?}", path = parser.parse_or_default(&path_flag));
22    println!("Arguments: {args:?}", args = parser.parse_many(&multi_args_flag, NArgs::Remainder));
23    println!("Ranges: {ranges:?}", ranges = parser.parse_many(&MULTI_ARGS_RANGE_FLAG, NArgs::SmartRemainder));
24}