summaryrefslogtreecommitdiffstats
path: root/src/repository/repository.rs
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-03-09 19:33:38 +0100
committerMatthias Beyer <matthias.beyer@atos.net>2021-03-10 11:10:23 +0100
commitd64c70960e266583e075c71eba78e26e1033ec2b (patch)
tree3e2fa079f1c10ebd3ff65dae9893bb2141fcc71b /src/repository/repository.rs
parent23489e5e9a39e6dbf0cdd4e81c9a5c273905bdfd (diff)
Refactor for more readability
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/repository/repository.rs')
-rw-r--r--src/repository/repository.rs40
1 files changed, 18 insertions, 22 deletions
diff --git a/src/repository/repository.rs b/src/repository/repository.rs
index 01fe68e..65b221b 100644
--- a/src/repository/repository.rs
+++ b/src/repository/repository.rs
@@ -114,33 +114,29 @@ impl Repository {
.merge(config::File::from_str(&buf, config::FileFormat::Toml))
.with_context(|| format!("Loading contents of {}", pkg_file.display()))?;
- let patches_after_merge = match config.get_array("patches") {
- Ok(v) => v,
+ let path_relative_to_root = path.strip_prefix(root)?;
+ let patches = match config.get_array("patches") {
+ Ok(v) => {
+ trace!("Patches after merging: {:?}", v);
+ v
+ },
Err(config::ConfigError::NotFound(_)) => vec![],
Err(e) => return Err(e).map_err(Error::from),
- };
- trace!("Patches after merging: {:?}", patches_after_merge);
-
- let path_relative_to_root = path.strip_prefix(root)?;
- let patches_after_merge = patches_after_merge
- .into_iter()
- .map(|patch| {
- let patch = patch.into_str()?;
- let new_path = path_relative_to_root.join(&patch);
- if new_path.exists() {
- Ok(Some(new_path))
- } else {
- Ok(None)
- }
- })
- .filter_map_ok(|x| x)
- .map_ok(|p| config::Value::from(p.display().to_string()))
- .collect::<Result<Vec<_>>>()?;
+ }
+ .into_iter()
+ .map(|patch| patch.into_str().map_err(Error::from))
+ .map_ok(|patch| path_relative_to_root.join(patch))
+ .filter_map_ok(|patch| if patch.exists() {
+ Some(config::Value::from(patch.display().to_string()))
+ } else {
+ None
+ })
+ .collect::<Result<Vec<_>>>()?;
- let patches = if patches_after_merge.is_empty() {
+ let patches = if patches.is_empty() {
patches_before_merge
} else {
- patches_after_merge
+ patches
};
trace!("Patches after postprocessing merge: {:?}", patches);