diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-06-15 09:51:24 +0200 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2021-06-16 13:16:28 +0200 |
commit | 5c57c19913a80d4a0dc9827f858dd7b124d44089 (patch) | |
tree | 50fed75ed5546abe3103b4bf6404b68fe96bae8d | |
parent | 0f83f5dcc71489428d3f2afa44cf7d29b9438289 (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.rs | 28 |
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 } |