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
}