diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/app/impl_self.rs | 19 | ||||
| -rw-r--r-- | src/main.rs | 14 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/app/impl_self.rs b/src/app/impl_self.rs index 1ed19e6..1dfe268 100644 --- a/src/app/impl_self.rs +++ b/src/app/impl_self.rs | |||
| @@ -33,8 +33,25 @@ impl App { | |||
| 33 | }; | 33 | }; |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | pub fn list_habit(&self) -> Vec<String> { | ||
| 37 | let habits_names = self.habits.iter().map(|x| x.name()).collect::<Vec<_>>(); | ||
| 38 | return habits_names; | ||
| 39 | } | ||
| 40 | |||
| 36 | pub fn add_habit(&mut self, h: Box<dyn HabitWrapper>) { | 41 | pub fn add_habit(&mut self, h: Box<dyn HabitWrapper>) { |
| 37 | self.habits.push(h); | 42 | if self |
| 43 | .habits | ||
| 44 | .iter() | ||
| 45 | .filter(|hab| hab.name() == h.name()) | ||
| 46 | .count() | ||
| 47 | > 0 | ||
| 48 | { | ||
| 49 | self.message.set_kind(MessageKind::Error); | ||
| 50 | self.message | ||
| 51 | .set_message(format!("Habit `{}` allready exist", h.name())) | ||
| 52 | } else { | ||
| 53 | self.habits.push(h); | ||
| 54 | } | ||
| 38 | } | 55 | } |
| 39 | 56 | ||
| 40 | pub fn list_habits(&self) -> Vec<String> { | 57 | pub fn list_habits(&self) -> Vec<String> { |
diff --git a/src/main.rs b/src/main.rs index d96119e..050a296 100644 --- a/src/main.rs +++ b/src/main.rs | |||
| @@ -33,6 +33,14 @@ fn main() { | |||
| 33 | .value_name("CMD") | 33 | .value_name("CMD") |
| 34 | .help("run a dijo command"), | 34 | .help("run a dijo command"), |
| 35 | ) | 35 | ) |
| 36 | .arg( | ||
| 37 | Arg::with_name("list") | ||
| 38 | .short("l") | ||
| 39 | .long("list") | ||
| 40 | .takes_value(false) | ||
| 41 | .help("list dijo habits") | ||
| 42 | .conflicts_with("command"), | ||
| 43 | ) | ||
| 36 | .get_matches(); | 44 | .get_matches(); |
| 37 | if let Some(c) = matches.value_of("command") { | 45 | if let Some(c) = matches.value_of("command") { |
| 38 | let command = Command::from_string(c); | 46 | let command = Command::from_string(c); |
| @@ -49,6 +57,12 @@ fn main() { | |||
| 49 | "Commands other than `track-up` and `track-down` are currently not supported!" | 57 | "Commands other than `track-up` and `track-down` are currently not supported!" |
| 50 | ), | 58 | ), |
| 51 | } | 59 | } |
| 60 | } else if matches.is_present("list") { | ||
| 61 | let app = App::load_state(); | ||
| 62 | let _habit_names = app.list_habit(); | ||
| 63 | for h in _habit_names { | ||
| 64 | println!("{}", h); | ||
| 65 | } | ||
| 52 | } else { | 66 | } else { |
| 53 | let mut s = termion().unwrap(); | 67 | let mut s = termion().unwrap(); |
| 54 | let app = App::load_state(); | 68 | let app = App::load_state(); |
