mirror of
https://github.com/RGBCube/dix
synced 2025-07-28 12:17:45 +00:00
main, print: move printing to new module
This commit is contained in:
parent
f50cf38e37
commit
1a385d0da3
2 changed files with 101 additions and 99 deletions
103
src/main.rs
103
src/main.rs
|
@ -1,3 +1,4 @@
|
||||||
|
mod print;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use core::str;
|
use core::str;
|
||||||
use env_logger;
|
use env_logger;
|
||||||
|
@ -342,11 +343,9 @@ fn main() {
|
||||||
.max()
|
.max()
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
print_added(added, &post, col_width);
|
print::print_added(added, &post, col_width);
|
||||||
println!();
|
print::print_removed(removed, &pre, col_width);
|
||||||
print_removed(removed, &pre, col_width);
|
print::print_changes(changed, &pre, &post, col_width);
|
||||||
println!();
|
|
||||||
print_changes(changed, &pre, &post, col_width);
|
|
||||||
|
|
||||||
if let Some((pre_handle, post_handle)) = closure_size_handles {
|
if let Some((pre_handle, post_handle)) = closure_size_handles {
|
||||||
match (pre_handle.join(), post_handle.join()) {
|
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);
|
debug!("Closure size for {}: {} MiB", path.display(), size_mib);
|
||||||
Ok(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
97
src/print.rs
Normal 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()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue