mirror of
https://github.com/RGBCube/dix
synced 2025-07-28 12:17:45 +00:00
main.rs: switch to hashsets
This commit is contained in:
parent
289881373a
commit
4feb513d7e
1 changed files with 8 additions and 21 deletions
29
src/main.rs
29
src/main.rs
|
@ -2,6 +2,7 @@ use clap::Parser;
|
||||||
use core::str;
|
use core::str;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use std::{process::Command, string::String};
|
use std::{process::Command, string::String};
|
||||||
|
use std::{collections::HashSet, hash::Hash, process::Command, string::String};
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
#[command(version, about, long_about = None)]
|
#[command(version, about, long_about = None)]
|
||||||
|
@ -47,27 +48,13 @@ fn main() {
|
||||||
let packages = get_packages(&args.path);
|
let packages = get_packages(&args.path);
|
||||||
let packages2 = get_packages(&args.path2);
|
let packages2 = get_packages(&args.path2);
|
||||||
|
|
||||||
// println!("{:?}", packages);
|
|
||||||
|
|
||||||
if let (Ok(packages), Ok(packages2)) = (packages, packages2) {
|
if let (Ok(packages), Ok(packages2)) = (packages, packages2) {
|
||||||
let mut added = vec![];
|
let pre_packages: HashSet<Package> = packages.iter().map(|p| get_version(p)).collect();
|
||||||
let mut removed = vec![];
|
let post_packages: HashSet<Package> =
|
||||||
|
packages2.iter().map(|p| get_version(p)).collect();
|
||||||
|
|
||||||
for i in &packages {
|
let added: HashSet<_> = pre_packages.difference(&post_packages).collect();
|
||||||
if !packages2.contains(i) {
|
let removed: HashSet<_> = post_packages.difference(&pre_packages).collect();
|
||||||
added.push(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for i in &packages {
|
|
||||||
if !packages2.contains(i) {
|
|
||||||
removed.push(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let added_pretty: Vec<Package> =
|
|
||||||
added.iter().map(|p| get_version(p.to_string())).collect();
|
|
||||||
let removed_pretty: Vec<Package> =
|
|
||||||
removed.iter().map(|p| get_version(p.to_string())).collect();
|
|
||||||
|
|
||||||
println!("Difference between the two generations:");
|
println!("Difference between the two generations:");
|
||||||
println!("Packages added: ");
|
println!("Packages added: ");
|
||||||
|
@ -81,14 +68,14 @@ fn main() {
|
||||||
println!("R: {:?}", p);
|
println!("R: {:?}", p);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for p in added_pretty.iter() {
|
for p in added.iter() {
|
||||||
if !p.name.is_empty() {
|
if !p.name.is_empty() {
|
||||||
println!("A: {} @ {}", p.name, p.version);
|
println!("A: {} @ {}", p.name, p.version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
println!();
|
println!();
|
||||||
println!("Packages removed: ");
|
println!("Packages removed: ");
|
||||||
for p in removed_pretty.iter() {
|
for p in removed.iter() {
|
||||||
if !p.name.is_empty() {
|
if !p.name.is_empty() {
|
||||||
println!("R: {} @ {}", p.name, p.version);
|
println!("R: {} @ {}", p.name, p.version);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue