pub struct TinyArgs {
pub program_name: String,
pub description: String,
pub help: String,
pub usage: String,
pub examples: Vec<String>,
pub cmds: HashMap<String, Command>,
pub opts: HashMap<String, Argument>,
pub va_args: Vec<String>,
pub active_cmd: Option<Command>,
}Fields§
§program_name: String§description: String§help: String§usage: String§examples: Vec<String>§cmds: HashMap<String, Command>§opts: HashMap<String, Argument>§va_args: Vec<String>§active_cmd: Option<Command>Implementations§
Source§impl TinyArgs
impl TinyArgs
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a TinyArgs instance
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_help_program_name(&mut self, name: &str)
pub fn define_help_program_name(&mut self, name: &str)
Define the program name displayed in the help section If not defined, the program name is automatically derived from the command line
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_help_description(&mut self, description: &str)
pub fn define_help_description(&mut self, description: &str)
Define the program description for the help section
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_help_usage(&mut self, usage: &str)
pub fn define_help_usage(&mut self, usage: &str)
Define program usage for the help section The program name gets automatically prefixed,
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_help_example(&mut self, examples: &str)
pub fn define_help_example(&mut self, examples: &str)
Define examples in for the help section You can this function multiple times to add more execution examples The program name gets automatically prefixed
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_command(
&mut self,
name: &'static str,
description: &'static str,
) -> CmdHandle
pub fn define_command( &mut self, name: &'static str, description: &'static str, ) -> CmdHandle
Define a command
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_option_bool(
&mut self,
name: &'static str,
short_name: impl Into<Option<char>>,
default_value: bool,
description: &'static str,
) -> OptHandle<bool>
pub fn define_option_bool( &mut self, name: &'static str, short_name: impl Into<Option<char>>, default_value: bool, description: &'static str, ) -> OptHandle<bool>
Define a boolean option
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_option_num(
&mut self,
name: &'static str,
short_name: impl Into<Option<char>>,
default_value: impl Into<f64>,
description: &'static str,
) -> OptHandle<f64>
pub fn define_option_num( &mut self, name: &'static str, short_name: impl Into<Option<char>>, default_value: impl Into<f64>, description: &'static str, ) -> OptHandle<f64>
Define a numerical option
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn define_option_txt(
&mut self,
name: &'static str,
short_name: impl Into<Option<char>>,
default_value: &str,
description: &'static str,
) -> OptHandle<String>
pub fn define_option_txt( &mut self, name: &'static str, short_name: impl Into<Option<char>>, default_value: &str, description: &'static str, ) -> OptHandle<String>
Define a text option
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn get_option<T: FromValue>(&self, opt_handle: OptHandle<T>) -> T
pub fn get_option<T: FromValue>(&self, opt_handle: OptHandle<T>) -> T
Get the option’s value from the stored handle
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn command(&self) -> CmdHandle
pub fn command(&self) -> CmdHandle
Get the active command handle CmdHandle::NONE is returned if no command is set Example:
if args.command() == version {
println!("Version: 1.2.3.4");
}Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn parse_arguments(&mut self) -> Result<(), Error>
pub fn parse_arguments(&mut self) -> Result<(), Error>
This function MUST be run for the input arguments to be processed Automatically handles the help printout if “help” or “h” is encountered Call example:
if let Err(e) = args.parse_arguments() {
eprintln!("Error: {e}");
return ExitCode::FAILURE;
}
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn parse_arguments_from_vec(
&mut self,
args: Vec<String>,
) -> Result<(), Error>
pub fn parse_arguments_from_vec( &mut self, args: Vec<String>, ) -> Result<(), Error>
Parse arguments from a provided vector of Strings
Sourcepub fn was_option_set<T>(&self, arg_handle: OptHandle<T>) -> bool
pub fn was_option_set<T>(&self, arg_handle: OptHandle<T>) -> bool
Find if an argument was explicitly set by the user
Sourcepub fn get_va_args(&self) -> Iter<'_, String>
pub fn get_va_args(&self) -> Iter<'_, String>
Retrieve the rest of input va args
Examples found in repository?
4fn main() -> ExitCode {
5 let mut args = TinyArgs::new();
6
7 // Optional help definitions:
8 args.define_help_program_name("demo");
9 args.define_help_description("A demo program for TinyArgs");
10 args.define_help_usage("[OPTIONS] [COMMAND] [ARGS]...");
11 args.define_help_example("--name=test some/path/ - Sets some values");
12
13 let list = args.define_command("list", "List vargs");
14 let version = args.define_command("version", "Display version");
15
16 let name = args.define_option_txt("name", None, "test", "A name of something");
17 let context = args.define_option_num("context", 'c', 4, "Context lines");
18 let verbose = args.define_option_bool("verbose", 'v', false, "Verbose mode");
19
20 if let Err(e) = args.parse_arguments() {
21 eprintln!("Error: {e}");
22 return ExitCode::FAILURE;
23 }
24
25 println!("name: {}", args.get_option(name));
26 println!("context: {}", args.get_option(context));
27 println!("verbose: {}", args.get_option(verbose));
28
29 if args.command() == version {
30 println!("Version: 1.2.3.4");
31 }
32
33 if args.command() == list {
34 for arg in args.get_va_args() {
35 println!("{arg}");
36 }
37 }
38
39 ExitCode::SUCCESS
40}Sourcepub fn get_help_text(&mut self) -> &str
pub fn get_help_text(&mut self) -> &str
Get help as str
Sourcepub fn print_help(&mut self)
pub fn print_help(&mut self)
Print the program help
Sourcepub fn print_help_and_exit(&mut self, exit_code: i32)
pub fn print_help_and_exit(&mut self, exit_code: i32)
Print the program help and exit program with code