Merge pull request #74 from jaemk/fix_panic

don't panic on missing folder
This commit is contained in:
Félix Saparelli 2018-09-08 19:43:44 +12:00 committed by GitHub
commit 5461c6ff1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View File

@ -1,6 +1,7 @@
extern crate watchexec; extern crate watchexec;
use watchexec::{cli, run}; use watchexec::{cli, run};
use std::error::Error;
fn main() { fn main() -> Result<(), Box<Error>> {
run(cli::get_args()); run(cli::get_args())
} }

View File

@ -16,6 +16,8 @@ use signal::{self, Signal};
use watcher::{Event, Watcher}; use watcher::{Event, Watcher};
use pathop::PathOp; use pathop::PathOp;
type Result<T> = ::std::result::Result<T, Box<::std::error::Error>>;
fn init_logger(debug: bool) { fn init_logger(debug: bool) {
let mut log_builder = env_logger::Builder::new(); let mut log_builder = env_logger::Builder::new();
let level = if debug { let level = if debug {
@ -46,7 +48,7 @@ fn should_switch_to_poll(_: &Error) -> bool {
false false
} }
pub fn run(args: cli::Args) { pub fn run(args: cli::Args) -> Result<()> {
let child_process: Arc<RwLock<Option<Process>>> = Arc::new(RwLock::new(None)); let child_process: Arc<RwLock<Option<Process>>> = Arc::new(RwLock::new(None));
let weak_child = Arc::downgrade(&child_process); let weak_child = Arc::downgrade(&child_process);
@ -67,15 +69,16 @@ pub fn run(args: cli::Args) {
init_logger(args.debug); init_logger(args.debug);
let paths: Vec<PathBuf> = args.paths let paths: Result<Vec<PathBuf>> = args.paths
.iter() .iter()
.map(|p| { .map(|p| {
Path::new(&p) Ok(Path::new(&p)
.canonicalize() .canonicalize()
.expect(&format!("unable to canonicalize \"{}\"", &p)) .map_err(|e| format!("Unable to canonicalize path: \"{}\", {}", p, e))?
.to_owned() .to_owned())
}) })
.collect(); .collect();
let paths = paths?;
let gitignore = if !args.no_vcs_ignore { let gitignore = if !args.no_vcs_ignore {
gitignore::load(&paths) gitignore::load(&paths)
@ -198,6 +201,7 @@ pub fn run(args: cli::Args) {
break; break;
} }
} }
Ok(())
} }
fn wait_fs(rx: &Receiver<Event>, filter: &NotificationFilter, debounce: u64) -> Vec<PathOp> { fn wait_fs(rx: &Receiver<Event>, filter: &NotificationFilter, debounce: u64) -> Vec<PathOp> {