mirror of
https://github.com/RGBCube/dix
synced 2025-07-28 12:17:45 +00:00
main: align all packages to the same column width
This commit is contained in:
parent
7afce21ff8
commit
560b049504
1 changed files with 21 additions and 14 deletions
35
src/main.rs
35
src/main.rs
|
@ -326,11 +326,26 @@ fn main() {
|
||||||
println!("Difference between the two generations:");
|
println!("Difference between the two generations:");
|
||||||
println!();
|
println!();
|
||||||
|
|
||||||
print_added(added, &post);
|
let mut width_changes = changed
|
||||||
|
.iter()
|
||||||
|
.filter(|&&p| match (pre.get(p), post.get(p)) {
|
||||||
|
(Some(version_pre), Some(version_post)) => version_pre != version_post,
|
||||||
|
_ => false,
|
||||||
|
});
|
||||||
|
|
||||||
|
let col_width = added
|
||||||
|
.iter()
|
||||||
|
.chain(removed.iter())
|
||||||
|
.chain(width_changes)
|
||||||
|
.map(|p| p.len())
|
||||||
|
.max()
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
|
print_added(added, &post, col_width);
|
||||||
println!();
|
println!();
|
||||||
print_removed(removed, &pre);
|
print_removed(removed, &pre, col_width);
|
||||||
println!();
|
println!();
|
||||||
print_changes(changed, &pre, &post);
|
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()) {
|
||||||
|
@ -525,7 +540,7 @@ fn get_closure_size(path: &std::path::Path) -> Result<i64> {
|
||||||
Ok(size_mib)
|
Ok(size_mib)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_added(set: HashSet<&str>, post: &HashMap<&str, HashSet<&str>>) {
|
fn print_added(set: HashSet<&str>, post: &HashMap<&str, HashSet<&str>>, col_width: usize) {
|
||||||
println!("{}", "Packages added:".underline().bold());
|
println!("{}", "Packages added:".underline().bold());
|
||||||
|
|
||||||
// Use sorted outpu
|
// Use sorted outpu
|
||||||
|
@ -536,8 +551,6 @@ fn print_added(set: HashSet<&str>, post: &HashMap<&str, HashSet<&str>>) {
|
||||||
|
|
||||||
// Sort by package name for consistent output
|
// Sort by package name for consistent output
|
||||||
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
|
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
|
||||||
// make the columns as wide as the widest package name
|
|
||||||
let col_width = set.iter().map(|p| p.len()).max().unwrap_or_default();
|
|
||||||
|
|
||||||
for (p, ver) in sorted {
|
for (p, ver) in sorted {
|
||||||
let version_str = ver.iter().copied().collect::<Vec<_>>().join(" ");
|
let version_str = ver.iter().copied().collect::<Vec<_>>().join(" ");
|
||||||
|
@ -551,7 +564,7 @@ fn print_added(set: HashSet<&str>, post: &HashMap<&str, HashSet<&str>>) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_removed(set: HashSet<&str>, pre: &HashMap<&str, HashSet<&str>>) {
|
fn print_removed(set: HashSet<&str>, pre: &HashMap<&str, HashSet<&str>>, col_width: usize) {
|
||||||
println!("{}", "Packages removed:".underline().bold());
|
println!("{}", "Packages removed:".underline().bold());
|
||||||
|
|
||||||
// Use sorted output for more predictable and readable results
|
// Use sorted output for more predictable and readable results
|
||||||
|
@ -563,9 +576,6 @@ fn print_removed(set: HashSet<&str>, pre: &HashMap<&str, HashSet<&str>>) {
|
||||||
// Sort by package name for consistent output
|
// Sort by package name for consistent output
|
||||||
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
|
sorted.sort_by(|(a, _), (b, _)| a.cmp(b));
|
||||||
|
|
||||||
// make the columns as wide as the widest package name
|
|
||||||
let col_width = set.iter().map(|p| p.len()).max().unwrap_or_default();
|
|
||||||
|
|
||||||
for (p, ver) in sorted {
|
for (p, ver) in sorted {
|
||||||
let version_str = ver.iter().copied().collect::<Vec<_>>().join(" ");
|
let version_str = ver.iter().copied().collect::<Vec<_>>().join(" ");
|
||||||
println!(
|
println!(
|
||||||
|
@ -582,20 +592,17 @@ fn print_changes(
|
||||||
set: HashSet<&str>,
|
set: HashSet<&str>,
|
||||||
pre: &HashMap<&str, HashSet<&str>>,
|
pre: &HashMap<&str, HashSet<&str>>,
|
||||||
post: &HashMap<&str, HashSet<&str>>,
|
post: &HashMap<&str, HashSet<&str>>,
|
||||||
|
col_width: usize,
|
||||||
) {
|
) {
|
||||||
println!("{}", "Version changes:".underline().bold());
|
println!("{}", "Version changes:".underline().bold());
|
||||||
|
|
||||||
// Use sorted output for more predictable and readable results
|
// Use sorted output for more predictable and readable results
|
||||||
let mut changes = Vec::new();
|
let mut changes = Vec::new();
|
||||||
|
|
||||||
// make the column as wide as the longest package name
|
|
||||||
let mut col_width = 0;
|
|
||||||
|
|
||||||
for p in set.iter().filter(|p| !p.is_empty()) {
|
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 let (Some(ver_pre), Some(ver_post)) = (pre.get(p), post.get(p)) {
|
||||||
if ver_pre != ver_post {
|
if ver_pre != ver_post {
|
||||||
changes.push((*p, ver_pre, ver_post));
|
changes.push((*p, ver_pre, ver_post));
|
||||||
col_width = std::cmp::max(col_width, p.len());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue