summaryrefslogtreecommitdiffstats
path: root/src/commands
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-08-17 12:22:03 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2021-08-17 12:22:03 +0200
commitac92817aba18c2fd204bee17ce317c7517f7d189 (patch)
tree0356e84f134965c249f876d3f6cedf8c864e8976 /src/commands
parent8466ab659f3461430bbf09d26a863b35a6492889 (diff)
parent524fd6ca6f1ec8827c4c45177c709c3261ad47c5 (diff)
Merge branch 'verify-multi'
Diffstat (limited to 'src/commands')
-rw-r--r--src/commands/source.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/commands/source.rs b/src/commands/source.rs
index df3217f..473169a 100644
--- a/src/commands/source.rs
+++ b/src/commands/source.rs
@@ -66,14 +66,23 @@ pub async fn verify(
.map(PackageVersionConstraint::try_from)
.transpose()?;
+ let matching_regexp = matches.value_of("matching")
+ .map(crate::commands::util::mk_package_name_regex)
+ .transpose()?;
+
let packages = repo
.packages()
- .filter(|p| pname.as_ref().map(|n| p.name() == n).unwrap_or(true))
.filter(|p| {
- pvers
- .as_ref()
- .map(|v| v.matches(p.version()))
- .unwrap_or(true)
+ match (pname.as_ref(), pvers.as_ref(), matching_regexp.as_ref()) {
+ (None, None, None) => true,
+ (Some(pname), None, None) => p.name() == pname,
+ (Some(pname), Some(vers), None) => p.name() == pname && vers.matches(p.version()),
+ (None, None, Some(regex)) => regex.is_match(p.name()),
+
+ (_, _, _) => {
+ panic!("This should not be possible, either we select packages by name and (optionally) version, or by regex.")
+ },
+ }
})
.inspect(|p| trace!("Found for verification: {} {}", p.name(), p.version()));