mj 0.4.3

My Journal - personal tool to capture ideas, work with journals, notes and tasks in your favourite text $EDITOR.
Documentation
use clap::ArgMatches;
use crate::core::*;

#[derive(Debug)]
pub enum JournalsArgs {
  EditJournal(JustDate),
  RemoveJournal(JustDate),
  ListJournals,
}

pub fn run(vault: &Vault, args: &JournalsArgs) -> Result<()> {
  match args {
    JournalsArgs::EditJournal(date) => {
      let _saved = journals::edit(&vault, &date)?;
      Ok(())
    },
    JournalsArgs::RemoveJournal(date) => journals::remove(&vault, &date),
    JournalsArgs::ListJournals => journals::list(&vault),
  }
}

pub fn match_args(matches: &ArgMatches) -> Option<JournalsArgs> {
  if let Some(matches) = matches.subcommand_matches("journals") {
    if let Some(matches) = matches.subcommand_matches("edit") {
      let date_str = matches.value_of("DATE").unwrap().to_owned();
      let date = JustDate::parse(&date_str).unwrap();
      return Some(JournalsArgs::EditJournal(date))
    }
    if let Some(matches) = matches.subcommand_matches("remove") {
      let date_str = matches.value_of("DATE").unwrap().to_owned();
      let date = JustDate::parse(&date_str).unwrap();
      return Some(JournalsArgs::RemoveJournal(date))
    }
    if let Some(_) = matches.subcommand_matches("list") {
      return Some(JournalsArgs::ListJournals)
    }
  }
  None
}