119625d8cSopenharmony_ciuse super::utils; 219625d8cSopenharmony_ci 319625d8cSopenharmony_ciuse clap::{arg, Command}; 419625d8cSopenharmony_ci 519625d8cSopenharmony_ci#[cfg(not(feature = "unstable-v5"))] 619625d8cSopenharmony_cistatic EXAMPLE1_TMPL_S: &str = "{bin} {version} 719625d8cSopenharmony_ci{author} 819625d8cSopenharmony_ci{about} 919625d8cSopenharmony_ci 1019625d8cSopenharmony_ciUsage: {usage} 1119625d8cSopenharmony_ci 1219625d8cSopenharmony_ci{all-args}"; 1319625d8cSopenharmony_ci 1419625d8cSopenharmony_ci#[cfg(feature = "unstable-v5")] 1519625d8cSopenharmony_cistatic EXAMPLE1_TMPL_S: &str = "{name} {version} 1619625d8cSopenharmony_ci{author} 1719625d8cSopenharmony_ci{about} 1819625d8cSopenharmony_ci 1919625d8cSopenharmony_ciUsage: {usage} 2019625d8cSopenharmony_ci 2119625d8cSopenharmony_ci{all-args}"; 2219625d8cSopenharmony_ci 2319625d8cSopenharmony_ci#[cfg(not(feature = "unstable-v5"))] 2419625d8cSopenharmony_cistatic EXAMPLE1_TMPS_F: &str = "{bin} {version} 2519625d8cSopenharmony_ci{author} 2619625d8cSopenharmony_ci{about} 2719625d8cSopenharmony_ci 2819625d8cSopenharmony_ciUsage: {usage} 2919625d8cSopenharmony_ci 3019625d8cSopenharmony_ciOptions: 3119625d8cSopenharmony_ci{options} 3219625d8cSopenharmony_ciArguments: 3319625d8cSopenharmony_ci{positionals} 3419625d8cSopenharmony_ciCommands: 3519625d8cSopenharmony_ci{subcommands}"; 3619625d8cSopenharmony_ci 3719625d8cSopenharmony_ci#[cfg(feature = "unstable-v5")] 3819625d8cSopenharmony_cistatic EXAMPLE1_TMPS_F: &str = "{name} {version} 3919625d8cSopenharmony_ci{author} 4019625d8cSopenharmony_ci{about} 4119625d8cSopenharmony_ci 4219625d8cSopenharmony_ciUsage: {usage} 4319625d8cSopenharmony_ci 4419625d8cSopenharmony_ciOptions: 4519625d8cSopenharmony_ci{options} 4619625d8cSopenharmony_ciArguments: 4719625d8cSopenharmony_ci{positionals} 4819625d8cSopenharmony_ciCommands: 4919625d8cSopenharmony_ci{subcommands}"; 5019625d8cSopenharmony_ci 5119625d8cSopenharmony_cistatic CUSTOM_TEMPL_HELP: &str = "MyApp 1.0 5219625d8cSopenharmony_ciKevin K. <kbknapp@gmail.com> 5319625d8cSopenharmony_ciDoes awesome things 5419625d8cSopenharmony_ci 5519625d8cSopenharmony_ciUsage: MyApp [OPTIONS] <output> [COMMAND] 5619625d8cSopenharmony_ci 5719625d8cSopenharmony_ciOptions: 5819625d8cSopenharmony_ci -c, --config <FILE> Sets a custom config file 5919625d8cSopenharmony_ci -d... Turn debugging information on 6019625d8cSopenharmony_ci -h, --help Print help 6119625d8cSopenharmony_ci -V, --version Print version 6219625d8cSopenharmony_ciArguments: 6319625d8cSopenharmony_ci <output> Sets an optional output file 6419625d8cSopenharmony_ciCommands: 6519625d8cSopenharmony_ci test does testing things 6619625d8cSopenharmony_ci help Print this message or the help of the given subcommand(s) 6719625d8cSopenharmony_ci"; 6819625d8cSopenharmony_ci 6919625d8cSopenharmony_cistatic SIMPLE_TEMPLATE: &str = "MyApp 1.0 7019625d8cSopenharmony_ciKevin K. <kbknapp@gmail.com> 7119625d8cSopenharmony_ciDoes awesome things 7219625d8cSopenharmony_ci 7319625d8cSopenharmony_ciUsage: MyApp [OPTIONS] <output> [COMMAND] 7419625d8cSopenharmony_ci 7519625d8cSopenharmony_ciCommands: 7619625d8cSopenharmony_ci test does testing things 7719625d8cSopenharmony_ci help Print this message or the help of the given subcommand(s) 7819625d8cSopenharmony_ci 7919625d8cSopenharmony_ciArguments: 8019625d8cSopenharmony_ci <output> Sets an optional output file 8119625d8cSopenharmony_ci 8219625d8cSopenharmony_ciOptions: 8319625d8cSopenharmony_ci -c, --config <FILE> Sets a custom config file 8419625d8cSopenharmony_ci -d... Turn debugging information on 8519625d8cSopenharmony_ci -h, --help Print help 8619625d8cSopenharmony_ci -V, --version Print version 8719625d8cSopenharmony_ci"; 8819625d8cSopenharmony_ci 8919625d8cSopenharmony_ci#[test] 9019625d8cSopenharmony_cifn with_template() { 9119625d8cSopenharmony_ci let cmd = get_app().help_template(EXAMPLE1_TMPL_S); 9219625d8cSopenharmony_ci utils::assert_output(cmd, "MyApp --help", SIMPLE_TEMPLATE, false); 9319625d8cSopenharmony_ci} 9419625d8cSopenharmony_ci 9519625d8cSopenharmony_ci#[test] 9619625d8cSopenharmony_cifn custom_template() { 9719625d8cSopenharmony_ci let cmd = get_app().help_template(EXAMPLE1_TMPS_F); 9819625d8cSopenharmony_ci utils::assert_output(cmd, "MyApp --help", CUSTOM_TEMPL_HELP, false); 9919625d8cSopenharmony_ci} 10019625d8cSopenharmony_ci 10119625d8cSopenharmony_ci#[test] 10219625d8cSopenharmony_cifn template_empty() { 10319625d8cSopenharmony_ci let cmd = Command::new("MyApp") 10419625d8cSopenharmony_ci .version("1.0") 10519625d8cSopenharmony_ci .author("Kevin K. <kbknapp@gmail.com>") 10619625d8cSopenharmony_ci .about("Does awesome things") 10719625d8cSopenharmony_ci .help_template(""); 10819625d8cSopenharmony_ci utils::assert_output(cmd, "MyApp --help", "\n", false); 10919625d8cSopenharmony_ci} 11019625d8cSopenharmony_ci 11119625d8cSopenharmony_ci#[test] 11219625d8cSopenharmony_cifn template_notag() { 11319625d8cSopenharmony_ci let cmd = Command::new("MyApp") 11419625d8cSopenharmony_ci .version("1.0") 11519625d8cSopenharmony_ci .author("Kevin K. <kbknapp@gmail.com>") 11619625d8cSopenharmony_ci .about("Does awesome things") 11719625d8cSopenharmony_ci .help_template("test no tag test"); 11819625d8cSopenharmony_ci utils::assert_output(cmd, "MyApp --help", "test no tag test\n", false); 11919625d8cSopenharmony_ci} 12019625d8cSopenharmony_ci 12119625d8cSopenharmony_ci#[test] 12219625d8cSopenharmony_cifn template_unknowntag() { 12319625d8cSopenharmony_ci let cmd = Command::new("MyApp") 12419625d8cSopenharmony_ci .version("1.0") 12519625d8cSopenharmony_ci .author("Kevin K. <kbknapp@gmail.com>") 12619625d8cSopenharmony_ci .about("Does awesome things") 12719625d8cSopenharmony_ci .help_template("test {unknown_tag} test"); 12819625d8cSopenharmony_ci utils::assert_output(cmd, "MyApp --help", "test {unknown_tag} test\n", false); 12919625d8cSopenharmony_ci} 13019625d8cSopenharmony_ci 13119625d8cSopenharmony_ci#[test] 13219625d8cSopenharmony_cifn template_author_version() { 13319625d8cSopenharmony_ci #[cfg(not(feature = "unstable-v5"))] 13419625d8cSopenharmony_ci let cmd = Command::new("MyApp") 13519625d8cSopenharmony_ci .version("1.0") 13619625d8cSopenharmony_ci .author("Kevin K. <kbknapp@gmail.com>") 13719625d8cSopenharmony_ci .about("Does awesome things") 13819625d8cSopenharmony_ci .help_template("{author}\n{version}\n{about}\n{bin}"); 13919625d8cSopenharmony_ci 14019625d8cSopenharmony_ci #[cfg(feature = "unstable-v5")] 14119625d8cSopenharmony_ci let cmd = Command::new("MyApp") 14219625d8cSopenharmony_ci .version("1.0") 14319625d8cSopenharmony_ci .author("Kevin K. <kbknapp@gmail.com>") 14419625d8cSopenharmony_ci .about("Does awesome things") 14519625d8cSopenharmony_ci .help_template("{author}\n{version}\n{about}\n{name}"); 14619625d8cSopenharmony_ci 14719625d8cSopenharmony_ci utils::assert_output( 14819625d8cSopenharmony_ci cmd, 14919625d8cSopenharmony_ci "MyApp --help", 15019625d8cSopenharmony_ci "Kevin K. <kbknapp@gmail.com>\n1.0\nDoes awesome things\nMyApp\n", 15119625d8cSopenharmony_ci false, 15219625d8cSopenharmony_ci ); 15319625d8cSopenharmony_ci} 15419625d8cSopenharmony_ci 15519625d8cSopenharmony_ci// ---------- 15619625d8cSopenharmony_ci 15719625d8cSopenharmony_cifn get_app() -> Command { 15819625d8cSopenharmony_ci Command::new("MyApp") 15919625d8cSopenharmony_ci .version("1.0") 16019625d8cSopenharmony_ci .author("Kevin K. <kbknapp@gmail.com>") 16119625d8cSopenharmony_ci .about("Does awesome things") 16219625d8cSopenharmony_ci .arg( 16319625d8cSopenharmony_ci arg!( 16419625d8cSopenharmony_ci -c --config <FILE> "Sets a custom config file" 16519625d8cSopenharmony_ci ) 16619625d8cSopenharmony_ci .required(false), 16719625d8cSopenharmony_ci ) 16819625d8cSopenharmony_ci .arg(arg!( 16919625d8cSopenharmony_ci <output> "Sets an optional output file" 17019625d8cSopenharmony_ci )) 17119625d8cSopenharmony_ci .arg(arg!( 17219625d8cSopenharmony_ci d: -d ... "Turn debugging information on" 17319625d8cSopenharmony_ci )) 17419625d8cSopenharmony_ci .subcommand( 17519625d8cSopenharmony_ci Command::new("test") 17619625d8cSopenharmony_ci .about("does testing things") 17719625d8cSopenharmony_ci .arg(arg!(-l --list "lists test values")), 17819625d8cSopenharmony_ci ) 17919625d8cSopenharmony_ci} 180