1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
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 }