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
}