1
Fork 0
mirror of https://github.com/RGBCube/dix synced 2025-07-28 04:07:46 +00:00

main, print: move printing to new module

This commit is contained in:
Bloxx12 2025-05-05 15:22:55 +02:00
parent f50cf38e37
commit 1a385d0da3
2 changed files with 101 additions and 99 deletions

View file

@ -1,3 +1,4 @@
mod print;
use clap::Parser;
use core::str;
use env_logger;
@ -342,11 +343,9 @@ fn main() {
.max()
.unwrap_or_default();
print_added(added, &post, col_width);
println!();
print_removed(removed, &pre, col_width);
println!();
print_changes(changed, &pre, &post, col_width);
print::print_added(added, &post, col_width);
print::print_removed(removed, &pre, col_width);
print::print_changes(changed, &pre, &post, col_width);
if let Some((pre_handle, post_handle)) = closure_size_handles {
match (pre_handle.join(), post_handle.join()) {
@ -540,97 +539,3 @@ fn get_closure_size(path: &std::path::Path) -> Result<i64> {
debug!("Closure size for {}: {} MiB", path.display(), size_mib);
Ok(size_mib)
}
fn print_added(set: HashSet<&str>, post: &HashMap<&str, HashSet<&str>>, col_width: usize) {
println!("{}", "Packages added:".underline().bold());
// Use sorted outpu
let mut sorted: Vec<_> = set
.iter()
.filter_map(|p| post.get(p).map(|ver| (*p, ver)))
.collect();
// Sort by package name for consistent output
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
for (p, ver) in sorted {
let mut version_vec = ver.iter().copied().collect::<Vec<_>>();
version_vec.sort_unstable();
let version_str = version_vec.join(", ");
println!(
"{} {:col_width$} {} {}",
"[A:]".green().bold(),
p,
"@".yellow().bold(),
version_str.blue()
);
}
}
fn print_removed(set: HashSet<&str>, pre: &HashMap<&str, HashSet<&str>>, col_width: usize) {
println!("{}", "Packages removed:".underline().bold());
// Use sorted output for more predictable and readable results
let mut sorted: Vec<_> = set
.iter()
.filter_map(|p| pre.get(p).map(|ver| (*p, ver)))
.collect();
// Sort by package name for consistent output
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
for (p, ver) in sorted {
let mut version_vec = ver.iter().copied().collect::<Vec<_>>();
version_vec.sort_unstable();
let version_str = version_vec.join(", ");
println!(
"{} {:col_width$} {} {}",
"[R:]".red().bold(),
p,
"@".yellow(),
version_str.blue()
);
}
}
fn print_changes(
set: HashSet<&str>,
pre: &HashMap<&str, HashSet<&str>>,
post: &HashMap<&str, HashSet<&str>>,
col_width: usize,
) {
println!("{}", "Version changes:".underline().bold());
// Use sorted output for more predictable and readable results
let mut changes = Vec::new();
for p in set.iter().filter(|p| !p.is_empty()) {
if let (Some(ver_pre), Some(ver_post)) = (pre.get(p), post.get(p)) {
if ver_pre != ver_post {
changes.push((*p, ver_pre, ver_post));
}
}
}
// Sort by package name for consistent output
changes.sort_by(|(a, _, _), (b, _, _)| a.cmp(b));
for (p, ver_pre, ver_post) in changes {
let mut version_vec_pre = ver_pre.iter().copied().collect::<Vec<_>>();
version_vec_pre.sort_unstable();
let version_str_pre = version_vec_pre.join(", ");
let mut version_vec_post = ver_post.iter().copied().collect::<Vec<_>>();
version_vec_post.sort_unstable();
let version_str_post = version_vec_post.join(", ");
println!(
"{} {:col_width$} {} {} ~> {}",
"[C:]".bold().bright_yellow(),
p,
"@".yellow(),
version_str_pre.magenta(),
version_str_post.blue()
);
}
}

97
src/print.rs Normal file
View file

@ -0,0 +1,97 @@
use core::str;
use std::collections::{HashMap, HashSet};
use yansi::Paint;
pub fn print_added(set: HashSet<&str>, post: &HashMap<&str, HashSet<&str>>, col_width: usize) {
println!("{}", "Packages added:".underline().bold());
// Use sorted outpu
let mut sorted: Vec<_> = set
.iter()
.filter_map(|p| post.get(p).map(|ver| (*p, ver)))
.collect();
// Sort by package name for consistent output
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
for (p, ver) in sorted {
let mut version_vec = ver.iter().copied().collect::<Vec<_>>();
version_vec.sort_unstable();
let version_str = version_vec.join(", ");
println!(
"{} {:col_width$} {} {}",
"[A:]".green().bold(),
p,
"@".yellow().bold(),
version_str.blue()
);
}
}
pub fn print_removed(set: HashSet<&str>, pre: &HashMap<&str, HashSet<&str>>, col_width: usize) {
println!("{}", "Packages removed:".underline().bold());
// Use sorted output for more predictable and readable results
let mut sorted: Vec<_> = set
.iter()
.filter_map(|p| pre.get(p).map(|ver| (*p, ver)))
.collect();
// Sort by package name for consistent output
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
for (p, ver) in sorted {
let mut version_vec = ver.iter().copied().collect::<Vec<_>>();
version_vec.sort_unstable();
let version_str = version_vec.join(", ");
println!(
"{} {:col_width$} {} {}",
"[R:]".red().bold(),
p,
"@".yellow(),
version_str.blue()
);
}
}
pub fn print_changes(
set: HashSet<&str>,
pre: &HashMap<&str, HashSet<&str>>,
post: &HashMap<&str, HashSet<&str>>,
col_width: usize,
) {
println!("{}", "Version changes:".underline().bold());
// Use sorted output for more predictable and readable results
let mut changes = Vec::new();
for p in set.iter().filter(|p| !p.is_empty()) {
if let (Some(ver_pre), Some(ver_post)) = (pre.get(p), post.get(p)) {
if ver_pre != ver_post {
changes.push((*p, ver_pre, ver_post));
}
}
}
// Sort by package name for consistent output
changes.sort_by(|(a, _, _), (b, _, _)| a.cmp(b));
for (p, ver_pre, ver_post) in changes {
let mut version_vec_pre = ver_pre.iter().copied().collect::<Vec<_>>();
version_vec_pre.sort_unstable();
let version_str_pre = version_vec_pre.join(", ");
let mut version_vec_post = ver_post.iter().copied().collect::<Vec<_>>();
version_vec_post.sort_unstable();
let version_str_post = version_vec_post.join(", ");
println!(
"{} {:col_width$} {} {} ~> {}",
"[C:]".bold().bright_yellow(),
p,
"@".yellow(),
version_str_pre.magenta(),
version_str_post.blue()
);
}
}