summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-06-15 09:51:24 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2021-06-16 13:16:28 +0200
commit5c57c19913a80d4a0dc9827f858dd7b124d44089 (patch)
tree50fed75ed5546abe3103b4bf6404b68fe96bae8d
parent0f83f5dcc71489428d3f2afa44cf7d29b9438289 (diff)
Move dependencies-of implementation to new package print interface
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
-rw-r--r--src/commands/dependencies_of.rs28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/commands/dependencies_of.rs b/src/commands/dependencies_of.rs
index 3e4ff21..827da92 100644
--- a/src/commands/dependencies_of.rs
+++ b/src/commands/dependencies_of.rs
@@ -10,14 +10,19 @@
//! Implementation of the 'dependencies-of' subcommand
+use std::io::Write;
+
use anyhow::Result;
use clap::ArgMatches;
+use futures::stream::StreamExt;
+use futures::stream::TryStreamExt;
use log::trace;
use crate::commands::util::getbool;
use crate::config::*;
use crate::package::PackageName;
use crate::repository::Repository;
+use crate::ui::*;
/// Implementation of the "dependencies_of" subcommand
pub async fn dependencies_of(
@@ -39,11 +44,9 @@ pub async fn dependencies_of(
};
let format = config.package_print_format();
- let mut stdout = std::io::stdout();
- let iter = repo
- .packages()
- .filter(|package| package_filter.filter(package))
- .inspect(|pkg| trace!("Found package: {:?}", pkg));
+ let hb = crate::ui::handlebars_for_package_printing(format)?;
+ let stdout = std::io::stdout();
+ let mut outlock = stdout.lock();
let print_runtime_deps = getbool(
matches,
@@ -80,5 +83,18 @@ pub async fn dependencies_of(
script_highlighting: false,
};
- crate::ui::print_packages(&mut stdout, format, iter, config, &flags)
+ let iter = repo
+ .packages()
+ .filter(|package| package_filter.filter(package))
+ .inspect(|pkg| trace!("Found package: {:?}", pkg))
+ .enumerate()
+ .map(|(i, p)| p.prepare_print(config, &flags, &hb, i));
+
+ tokio_stream::iter(iter)
+ .map(|pp| pp.into_displayable())
+ .try_for_each(|p| {
+ let r = writeln!(&mut outlock, "{}", p).map_err(anyhow::Error::from);
+ futures::future::ready(r)
+ })
+ .await
}