diff --git a/rust/finder.rs b/rust/finder.rs index f3baa97..37eff2a 100644 --- a/rust/finder.rs +++ b/rust/finder.rs @@ -1,39 +1,43 @@ use ignore::{overrides::OverrideBuilder, WalkBuilder}; use std::fs; pub struct Options { pub directory: String, } pub fn find_files(options: Options) -> Vec { let mut files: Vec = Vec::new(); let base_path = &fs::canonicalize(options.directory).unwrap(); let mut builder = WalkBuilder::new(base_path); // Search for hidden files and directories builder.hidden(false); // Don't require a git repo to use .gitignore files. We want to use the .gitignore files // wherever we are builder.require_git(false); // TODO(ade): Remove unwraps and find a good way to get the errors into the UI. Currently there // is no way to handel errors in the rust library let mut override_builder = OverrideBuilder::new(""); override_builder.add("!.git").unwrap(); override_builder.add("!.sl").unwrap(); let overrides = override_builder.build().unwrap(); builder.overrides(overrides); for result in builder.build() { - let absolute_candidate = result.unwrap(); + let absolute_candidate = match result { + Ok(absolute_candidate) => absolute_candidate, + Err(..) => continue, + }; + let candidate_path = absolute_candidate.path().strip_prefix(base_path).unwrap(); if candidate_path.is_dir() { continue; } files.push(candidate_path.to_str().unwrap().to_string()); } files }