diff options
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/actions.rs | 22 | ||||
| -rw-r--r-- | src/utils.rs | 11 | 
3 files changed, 25 insertions, 10 deletions
| @@ -1,6 +1,6 @@  [package]  name = "podcast" -version = "0.1.1" +version = "0.1.2"  authors = ["njaremko <njaremko@gmail.com>"]  description = "A command line podcast player"  license = "GPL-3.0" 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 +        } +    }  } | 
