summaryrefslogtreecommitdiffstats
path: root/libimagutil
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-09-27 20:18:13 +0200
committerMatthias Beyer <mail@beyermatthias.de>2016-09-28 19:30:05 +0200
commit11490b232c71e3ee03d8f8c424902465fb3f7ae3 (patch)
tree326c9d9f726e54a71b5ea63011c5c9eea1e078c2 /libimagutil
parent7482ffb5b3c75cd2508983ad40574cb1833fbe50 (diff)
Add implementation for validators
Diffstat (limited to 'libimagutil')
-rw-r--r--libimagutil/src/cli_validators.rs26
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))
+}
+