diff options
Diffstat (limited to 'src/match_handler.rs')
| -rw-r--r-- | src/match_handler.rs | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/src/match_handler.rs b/src/match_handler.rs deleted file mode 100644 index ac09d15..0000000 --- a/src/match_handler.rs +++ /dev/null @@ -1,112 +0,0 @@ -use clap::{App, ArgMatches}; - -use std::env; -use std::path::Path; - -use crate::actions::*; -use crate::errors::*; -use crate::structs::*; - -pub fn handle_matches( - version: &str, - state: &mut State, - config: &Config, - app: &mut App, - matches: &ArgMatches, -) -> Result<()> { - match matches.subcommand_name() { - Some("download") => { - let download_matches = matches - .subcommand_matches("download") - .chain_err(|| "unable to find subcommand matches")?; - let podcast = download_matches - .value_of("PODCAST") - .chain_err(|| "unable to find subcommand match")?; - match download_matches.value_of("EPISODE") { - Some(ep) => { - if String::from(ep).contains(|c| c == '-' || c == ',') { - download_range(&state, podcast, ep)? - } else if download_matches.occurrences_of("name") > 0 { - download_episode_by_name( - &state, - podcast, - ep, - download_matches.occurrences_of("all") > 0, - )? - } else { - download_episode_by_num(&state, podcast, ep)? - } - } - None => download_all(&state, podcast)?, - } - } - Some("ls") | Some("list") => { - let list_matches = matches - .subcommand_matches("ls") - .or_else(|| matches.subcommand_matches("list")) - .chain_err(|| "unable to find subcommand matches")?; - match list_matches.value_of("PODCAST") { - Some(regex) => list_episodes(regex)?, - None => list_subscriptions(&state)?, - } - } - Some("play") => { - let play_matches = matches - .subcommand_matches("play") - .chain_err(|| "unable to find subcommand matches")?; - let podcast = play_matches - .value_of("PODCAST") - .chain_err(|| "unable to find subcommand match")?; - match play_matches.value_of("EPISODE") { - Some(episode) => { - if play_matches.occurrences_of("name") > 0 { - play_episode_by_name(&state, podcast, episode)? - } else { - play_episode_by_num(&state, podcast, episode)? - } - } - None => play_latest(&state, podcast)?, - } - } - Some("sub") | Some("subscribe") => { - let subscribe_matches = matches - .subcommand_matches("sub") - .or_else(|| matches.subcommand_matches("subscribe")) - .chain_err(|| "unable to find subcommand matches")?; - let url = subscribe_matches - .value_of("URL") - .chain_err(|| "unable to find subcommand match")?; - state.subscribe(url).chain_err(|| "unable to subscribe")?; - download_rss(&config, url)?; - } - Some("search") => println!("This feature is coming soon..."), - Some("rm") => { - let rm_matches = matches - .subcommand_matches("rm") - .chain_err(|| "unable to find subcommand matches")?; - let regex = rm_matches.value_of("PODCAST").chain_err(|| "")?; - remove_podcast(state, regex)? - } - Some("completion") => { - let matches = matches - .subcommand_matches("completion") - .chain_err(|| "unable to find subcommand matches")?; - match matches.value_of("SHELL") { - Some(shell) => print_completion(app, shell), - None => { - let shell_path_env = env::var("SHELL"); - if let Ok(p) = shell_path_env { - let shell_path = Path::new(&p); - if let Some(shell) = shell_path.file_name() { - print_completion(app, shell.to_str().chain_err(|| format!("Unable to convert {:?} to string", shell))?) - } - } - } - } - } - Some("refresh") => update_rss(state), - Some("update") => check_for_update(version)?, - _ => (), - }; - Ok(()) -} |
