From c1aaad85e086adf2cbea564b4f3e22d4d64294c8 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Mon, 30 Aug 2021 09:54:05 +0200 Subject: Fix: Do not join patch path with root directory path This fixes the relative pathes for the patch files by not joining it with the root directory path. The exists-check was removed, because the filtering before that already does that. Signed-off-by: Matthias Beyer Tested-by: Matthias Beyer --- src/repository/repository.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/repository') diff --git a/src/repository/repository.rs b/src/repository/repository.rs index ee2e08f..3cab7c0 100644 --- a/src/repository/repository.rs +++ b/src/repository/repository.rs @@ -94,7 +94,7 @@ impl Repository { .into_iter() .map(|p| { if let Some(current_dir) = path.parent() { - fsr.root().join(current_dir).join(p) + current_dir.join(p) } else { unimplemented!() } @@ -122,7 +122,7 @@ impl Repository { // If we found any patches, use them. Otherwise use the array from before the merge // (which already has the correct pathes from the previous recursion). - let patches = if !patches.is_empty() && patches.iter().all(|p| p.exists()) { + let patches = if !patches.is_empty() { patches } else { patches_before_merge -- cgit v1.2.3 From 44b8f52b895c356abef4ca0d5ee8fe2db2984e9f Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Mon, 30 Aug 2021 09:56:38 +0200 Subject: Fix: implement unimplemented!() This fixes a missed unimplemented!() in the codebase. Signed-off-by: Matthias Beyer --- src/repository/repository.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/repository') diff --git a/src/repository/repository.rs b/src/repository/repository.rs index 3cab7c0..d5f90f3 100644 --- a/src/repository/repository.rs +++ b/src/repository/repository.rs @@ -17,6 +17,7 @@ use anyhow::Context; use anyhow::Error; use anyhow::Result; use log::trace; +use resiter::AndThen; use resiter::FilterMap; use resiter::Map; @@ -92,19 +93,17 @@ impl Repository { // get the patches that are in the `config` object after the merge let patches = get_patches(&config)? .into_iter() - .map(|p| { - if let Some(current_dir) = path.parent() { - current_dir.join(p) - } else { - unimplemented!() - } + .map(|p| if let Some(current_dir) = path.parent() { + Ok(current_dir.join(p)) + } else { + Err(anyhow!("Path should point to path with parent, but doesn't: {}", path.display())) }) .inspect(|patch| trace!("Patch: {:?}", patch)) // if the patch file exists, use it (as config::Value). // // Otherwise we have an error here, because we're refering to a non-existing file. - .map(|patch| if patch.exists() { + .and_then_ok(|patch| if patch.exists() { trace!("Path to patch exists: {}", patch.display()); Ok(Some(patch)) } else if patches_before_merge.iter().any(|pb| pb.file_name() == patch.file_name()) { -- cgit v1.2.3