diff options
| author | njaremko | 2017-07-20 22:10:19 -0400 |
|---|---|---|
| committer | njaremko | 2017-07-20 22:10:19 -0400 |
| commit | 79254251d52b62ea5b20ba5eb042ea7c31963de8 (patch) | |
| tree | b23279424c319b3a8a7d5584cd36b2f898b08368 /src | |
| parent | 2623981fb2ca5b35d04d37f82102eb214d24e839 (diff) | |
| download | podcast-79254251d52b62ea5b20ba5eb042ea7c31963de8.tar.bz2 | |
Fix handling of missing mpv executable
Diffstat (limited to 'src')
| -rw-r--r-- | src/actions.rs | 22 | ||||
| -rw-r--r-- | src/utils.rs | 11 |
2 files changed, 24 insertions, 9 deletions
diff --git a/src/actions.rs b/src/actions.rs index b808ecc..15d19a4 100644 --- a/src/actions.rs +++ b/src/actions.rs @@ -2,8 +2,8 @@ use regex::Regex; use reqwest; use rss::Channel; use std::fs::{DirBuilder, File}; -use std::io::{Read, Write}; -use std::process::Command; +use std::io::{self, Read, Write}; +use std::process::{Command, ExitStatus}; use structs::*; use utils::*; @@ -101,18 +101,28 @@ pub fn play_episode(state: &State, p_search: &str, ep_num_string: &str) { path.push(podcast.title()); path.push(filename); if path.exists() { - launch_mpv(path.to_str().unwrap()); + if let Err(err) = launch_mpv(path.to_str().unwrap()) { + handle_launch_mpv_error(err); + } } else { - launch_mpv(episode.url().unwrap()); + if let Err(err) = launch_mpv(episode.url().unwrap()) { + handle_launch_mpv_error(err); + } } return; } } } -fn launch_mpv(url: &str) { +fn launch_mpv(url: &str) -> io::Result<ExitStatus> { Command::new("mpv") .args(&["--audio-display=no", url]) .status() - .expect("failed to execute process"); +} + +fn handle_launch_mpv_error(err: io::Error) { + match err.kind() { + io::ErrorKind::NotFound => eprintln!("mpv not found in PATH, is it installed?"), + _ => eprintln!("Error: {}", err), + } } diff --git a/src/utils.rs b/src/utils.rs index ffe691e..e602932 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -28,7 +28,12 @@ pub fn already_downloaded(dir: &str) -> BTreeSet<String> { } pub fn get_podcast_dir() -> PathBuf { - let mut path = env::home_dir().unwrap(); - path.push("Podcasts"); - path + match env::var_os("PODCAST") { + Some(val) => PathBuf::from(val), + None => { + let mut path = env::home_dir().unwrap(); + path.push("Podcasts"); + path + } + } } |
