summaryrefslogtreecommitdiffstats
path: root/src/commands/tree_of.rs
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-09-16 12:38:50 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2021-09-16 12:38:50 +0200
commit555734ea066d11d0b3efb96bff84563847f0757d (patch)
tree6d46f8b8fd0c4c563f401ca326fd425c9a8af53b /src/commands/tree_of.rs
parent63566cccba0c2c42af2e38d7ec0a922a60cf128d (diff)
parent1ad7f9d3a2e783a2392b5362e34930032cdffdb1 (diff)
Merge branch 'dependency-if'
Diffstat (limited to 'src/commands/tree_of.rs')
-rw-r--r--src/commands/tree_of.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/commands/tree_of.rs b/src/commands/tree_of.rs
index 6b297e3..811b2b7 100644
--- a/src/commands/tree_of.rs
+++ b/src/commands/tree_of.rs
@@ -20,7 +20,10 @@ use resiter::AndThen;
use crate::package::Dag;
use crate::package::PackageName;
use crate::package::PackageVersionConstraint;
+use crate::package::condition::ConditionData;
use crate::repository::Repository;
+use crate::util::EnvironmentVariableName;
+use crate::util::docker::ImageName;
/// Implementation of the "tree_of" subcommand
pub async fn tree_of(
@@ -36,6 +39,22 @@ pub async fn tree_of(
.map(PackageVersionConstraint::try_from)
.transpose()?;
+ let image_name = matches
+ .value_of("image")
+ .map(String::from)
+ .map(ImageName::from);
+
+ let additional_env = matches
+ .values_of("env")
+ .unwrap_or_default()
+ .map(crate::util::env::parse_to_env)
+ .collect::<Result<Vec<(EnvironmentVariableName, String)>>>()?;
+
+ let condition_data = ConditionData {
+ image_name: image_name.as_ref(),
+ env: &additional_env,
+ };
+
repo.packages()
.filter(|p| pname.as_ref().map(|n| p.name() == n).unwrap_or(true))
.filter(|p| {
@@ -44,7 +63,7 @@ pub async fn tree_of(
.map(|v| v.matches(p.version()))
.unwrap_or(true)
})
- .map(|package| Dag::for_root_package(package.clone(), &repo, None))
+ .map(|package| Dag::for_root_package(package.clone(), &repo, None, &condition_data))
.and_then_ok(|tree| {
let stdout = std::io::stdout();
let mut outlock = stdout.lock();