diff --git a/src/core.rs b/src/core.rs index 7a3c8b0..b7d65d0 100644 --- a/src/core.rs +++ b/src/core.rs @@ -90,22 +90,32 @@ impl Pacdef { println!("pacdef, version: {}", env!("CARGO_PKG_VERSION")) } - pub(crate) fn show_unmanaged_packages(self) { - for mut b in Backends::iter() { - b.load(&self.groups); + fn show_unmanaged_packages(self) { + let unmanaged_per_backend = &self.get_unmanaged_packages(); - let unmanaged = b.get_unmanaged_packages_sorted(); - if unmanaged.is_empty() { + for (backend, packages) in unmanaged_per_backend.iter() { + if packages.is_empty() { continue; } - - println!("{}", b.get_section()); - for p in unmanaged { - println!(" {p}"); + println!("{}", backend.get_section()); + for package in packages { + println!(" {package}"); } } } + fn get_unmanaged_packages(self) -> ToDoPerBackend { + let mut result = ToDoPerBackend::new(); + + for mut backend in Backends::iter() { + backend.load(&self.groups); + + let unmanaged = backend.get_unmanaged_packages_sorted(); + result.push((backend, unmanaged)); + } + result + } + // /// Returns a `Vec` of alphabetically sorted unmanaged packages. // pub(crate) fn get_unmanaged_packages(&mut self) -> Vec { // let managed = self.take_packages_as_set(); @@ -154,9 +164,9 @@ impl ToDoPerBackend { self.0.push(item); } - // fn iter(&self) -> impl Iterator, Vec)> { - // self.0.iter() - // } + fn iter(&self) -> impl Iterator, Vec)> { + self.0.iter() + } fn nothing_to_do_for_all_backends(&self) -> bool { self.0.iter().all(|(_, diff)| diff.is_empty())