Skip to content

Commit

Permalink
examples: add custom validator example
Browse files Browse the repository at this point in the history
  • Loading branch information
sru committed Aug 27, 2015
1 parent d4f1b74 commit b9997d1
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions examples/15_CustomValidator.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
extern crate clap;

use clap::{App, Arg};

fn main() {
// You can define a function (or a closure) to use as a validator to argument values. The
// function must accept a String and return Result<(), String> where Err(String) is the message
// displayed to the user.

let matches = App::new("myapp")
// Application logic goes here...
.arg(Arg::with_name("input")
.help("the input file to use")
.index(1)
.required(true)

.validator(|val| {
// val is the argument value passed in by the user
// val has type of String.

if val.ends_with(".png") {
Ok(())
} else {
// clap automatically adds "error: " to the beginning
// of the message.
Err(String::from("the file format must be png."))
}

// Of course, you can do more complicated validation as
// well, but for the simplicity, this example only checks
// if the value passed in ends with ".png" or not.
}))
.get_matches();

// Continued program logic here...
}

0 comments on commit b9997d1

Please sign in to comment.