diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-09-27 20:18:13 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-09-28 19:30:05 +0200 |
commit | 11490b232c71e3ee03d8f8c424902465fb3f7ae3 (patch) | |
tree | 326c9d9f726e54a71b5ea63011c5c9eea1e078c2 /libimagutil | |
parent | 7482ffb5b3c75cd2508983ad40574cb1833fbe50 (diff) |
Add implementation for validators
Diffstat (limited to 'libimagutil')
-rw-r--r-- | libimagutil/src/cli_validators.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libimagutil/src/cli_validators.rs b/libimagutil/src/cli_validators.rs new file mode 100644 index 00000000..20c4f0b8 --- /dev/null +++ b/libimagutil/src/cli_validators.rs @@ -0,0 +1,26 @@ +//! Functions to be used for clap::Arg::validator() +//! to validate arguments + +use std::path::PathBuf; +use boolinator::Boolinator; + +pub fn is_file(s: String) -> Result<(), String> { + PathBuf::from(s.clone()).is_file().as_result((), format!("Not a File: {}", s)) +} + +pub fn is_directory(s: String) -> Result<(), String> { + PathBuf::from(s.clone()).is_dir().as_result((), format!("Not a Directory: {}", s)) +} + +pub fn is_integer(s: String) -> Result<(), String> { + use std::str::FromStr; + + let i : Result<i64, _> = FromStr::from_str(&s); + i.map(|_| ()).map_err(|_| format!("Not an integer: {}", s)) +} + +pub fn is_url(s: String) -> Result<(), String> { + use url::Url; + Url::parse(&s).map(|_| ()).map_err(|_| format!("Not a URL: {}", s)) +} + |