use crate::command::Matches;
pub struct Arg<'a> {
pub name: &'a str,
pub about: &'a str,
pub is_flag: bool,
pub default: Option<&'a str>,
}
impl<'a> Arg<'a> {
pub fn new(name: &'a str) -> Self {
Arg {
name,
about: "",
is_flag: false,
default: None,
}
}
pub fn about(mut self, about: &'a str) -> Self {
self.about = about;
self
}
pub fn is_flag(mut self, is_flag: bool) -> Self {
self.is_flag = is_flag;
self
}
pub fn default(mut self, default: &'a str) -> Self {
self.default = Some(default);
self
}
}
impl Matches {
pub fn value_of_str(&self, key: &str, default: &str) -> String {
self.value_of(key).unwrap_or(&default.to_string()).to_string()
}
pub fn value_of_int(&self, key: &str, default: i32) -> i32 {
self.value_of(key)
.unwrap_or(&default.to_string())
.parse::<i32>()
.unwrap_or(default)
}
}