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
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 }