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 IdeasArgs {
  EditIdea(String),
  RemoveIdea(String),
  ListIdeas,
}

pub fn run(vault: &Vault, args: &IdeasArgs) -> Result<()> {
  match args {
    IdeasArgs::EditIdea(name) => {
      let _saved = ideas::edit(&vault, name.to_owned())?;
      Ok(())
    },
    IdeasArgs::RemoveIdea(name) => ideas::remove(&vault, name.to_owned()),
    IdeasArgs::ListIdeas => ideas::list(&vault),
  }
}

pub fn match_args(matches: &ArgMatches) -> Option<IdeasArgs> {
  if let Some(matches) = matches.subcommand_matches("ideas") {
    if let Some(matches) = matches.subcommand_matches("edit") {
      let name = matches.value_of("NAME").unwrap();
      return Some(IdeasArgs::EditIdea(name.to_owned()))
    }
    if let Some(matches) = matches.subcommand_matches("remove") {
      let name = matches.value_of("NAME").unwrap();
      return Some(IdeasArgs::RemoveIdea(name.to_owned()))
    }
    if let Some(_) = matches.subcommand_matches("list") {
      return Some(IdeasArgs::ListIdeas)
    }
  }
  None
}