From 2682dde41d6a571356e609e2b58d408d916ed0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fe=CC=81lix=20Saparelli?= Date: Sun, 16 Jan 2022 16:11:17 +1300 Subject: [PATCH] Handle errors from ignore file discovery --- cli/src/filterer/common.rs | 23 ++++++++++++++++------- cli/src/filterer/tagged.rs | 12 ++++++++---- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/cli/src/filterer/common.rs b/cli/src/filterer/common.rs index 1bec3c5..6c189ba 100644 --- a/cli/src/filterer/common.rs +++ b/cli/src/filterer/common.rs @@ -34,16 +34,25 @@ pub async fn dirs(args: &ArgMatches<'static>) -> Result<(PathBuf, PathBuf)> { Ok((project_origin, workdir)) } -pub async fn ignores(args: &ArgMatches<'static>, origin: &Path) -> Result> { +pub async fn vcs_types(origin: &Path) -> Vec { let vcs_types = project::types(origin) .await .into_iter() .filter(|pt| pt.is_vcs()) .collect::>(); debug!(?vcs_types, "resolved vcs types"); + vcs_types +} - let (mut ignores, _errors) = ignore::from_origin(origin).await; - // TODO: handle errors +pub async fn ignores( + args: &ArgMatches<'static>, + vcs_types: &[ProjectType], + origin: &Path, +) -> Result> { + let (mut ignores, errors) = ignore::from_origin(origin).await; + for err in errors { + warn!("while discovering project-local ignore files: {}", err); + } debug!(?ignores, "discovered ignore files from project origin"); // TODO: use drain_ignore instead for x = x.filter()... when that stabilises @@ -71,8 +80,10 @@ pub async fn ignores(args: &ArgMatches<'static>, origin: &Path) -> Result, origin: &Path) -> Result) -> Result> { let (project_origin, workdir) = super::common::dirs(args).await?; - let ignores = super::common::ignores(args, &project_origin).await?; + let vcs_types = super::common::vcs_types(&project_origin).await; + let ignores = super::common::ignores(args, &vcs_types, &project_origin).await?; let filterer = TaggedFilterer::new(project_origin, workdir.clone())?; @@ -34,8 +36,10 @@ pub async fn tagged(args: &ArgMatches<'static>) -> Result> { debug!(?filter_files, "resolved command filter files"); if !args.is_present("no-global-filters") { - // TODO: handle errors - let (global_filter_files, _errors) = files::from_environment().await; + let (global_filter_files, errors) = files::from_environment().await; + for err in errors { + warn!("while discovering project-local filter files: {}", err); + } debug!(?global_filter_files, "discovered global filter files"); filter_files.extend(global_filter_files); }