aboutsummaryrefslogtreecommitdiff
path: root/clap/examples/18_builder_macro.rs
diff options
context:
space:
mode:
Diffstat (limited to 'clap/examples/18_builder_macro.rs')
-rw-r--r--clap/examples/18_builder_macro.rs84
1 files changed, 0 insertions, 84 deletions
diff --git a/clap/examples/18_builder_macro.rs b/clap/examples/18_builder_macro.rs
deleted file mode 100644
index 6bdce47..0000000
--- a/clap/examples/18_builder_macro.rs
+++ /dev/null
@@ -1,84 +0,0 @@
-#[macro_use]
-extern crate clap;
-
-// Note, there isn't a need for "use clap::{ ... };" Because the clap_app! macro uses
-// $crate:: internally
-
-fn main() {
-
- // Validation example testing that a file exists
- let file_exists = |path| {
- if std::fs::metadata(path).is_ok() {
- Ok(())
- } else {
- Err(String::from("File doesn't exist"))
- }
- };
-
- // External module may contain this subcommand. If this exists in another module, a function is
- // required to access it. Recommend `fn clap() -> Clap::SubCommand`.
- let external_sub_command = clap_app!( @subcommand foo =>
- (@arg bar: -b "Bar")
- );
-
- let matches = clap_app!(MyApp =>
- (@setting SubcommandRequiredElseHelp)
- (version: "1.0")
- (author: "Alice")
- (about: "Does awesome things")
- (@arg config: -c --config <conf> #{1, 2} {file_exists} "Sets a custom config file")
- (@arg proxyHostname: --("proxy-hostname") +takes_value "Sets the hostname of the proxy to use")
- (@arg input: * "Input file")
- (@group test =>
- (@attributes +required)
- (@arg output: "Sets an optional output file")
- (@arg debug: -d ... "Turn debugging information on")
- )
- (subcommand: external_sub_command)
- (@subcommand test =>
- (about: "does testing things")
- (version: "2.5")
- (@arg list: -l "Lists test values")
- (@arg test_req: -r requires[list] "Tests requirement for listing")
- (@arg aaaa: --aaaa +takes_value {
- |a| if a.contains('a') {
- Ok(())
- } else {
- Err(String::from("string does not contain at least one a"))
- }
- } "Test if the argument contains an a")
- )
- ).get_matches();
-
- // You can check the value provided by positional arguments, or option arguments
- if let Some(o) = matches.value_of("output") {
- println!("Value for output: {}", o);
- }
-
- if let Some(c) = matches.value_of("config") {
- println!("Value for config: {}", c);
- }
-
- // You can see how many times a particular flag or argument occurred
- // Note, only flags can have multiple occurrences
- match matches.occurrences_of("debug") {
- 0 => println!("Debug mode is off"),
- 1 => println!("Debug mode is kind of on"),
- 2 => println!("Debug mode is on"),
- 3 | _ => println!("Don't be crazy"),
- }
-
- // You can check for the existence of subcommands, and if found use their
- // matches just as you would the top level app
- if let Some(matches) = matches.subcommand_matches("test") {
- // "$ myapp test" was run
- if matches.is_present("list") {
- // "$ myapp test -l" was run
- println!("Printing testing lists...");
- } else {
- println!("Not printing testing lists...");
- }
- }
-
- // Continued program logic goes here...
-}