aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/app/impl_self.rs19
-rw-r--r--src/main.rs14
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();