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}