2024-03-18 22:31:45 +00:00
|
|
|
use Fasching::{compare_snapshots, create_snapshot, import_snapshot};
|
2024-03-18 22:20:57 +00:00
|
|
|
use Fasching::hasher::HashType::BLAKE3;
|
2024-03-18 22:35:19 +00:00
|
|
|
use Fasching::snapshot::{Snapshot, SnapshotChangeType, SnapshotCompareResult};
|
2024-03-18 22:20:57 +00:00
|
|
|
use crate::syscompare::Comparer;
|
|
|
|
|
|
|
|
pub struct CompareMode {
|
|
|
|
left: Snapshot,
|
|
|
|
right: Snapshot,
|
|
|
|
args: Vec<String>,
|
2024-03-18 22:35:19 +00:00
|
|
|
result_type: SnapshotChangeType,
|
|
|
|
results: SnapshotCompareResult,
|
2024-03-18 22:20:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
impl CompareMode {
|
2024-03-18 22:31:45 +00:00
|
|
|
pub fn new(args: Vec<String>, left: String, right: String) -> CompareMode {
|
|
|
|
|
|
|
|
let left = import_snapshot(left);
|
|
|
|
let right = import_snapshot(right);
|
2024-03-18 22:20:57 +00:00
|
|
|
|
|
|
|
|
2024-03-18 22:28:33 +00:00
|
|
|
CompareMode {
|
2024-03-18 22:31:45 +00:00
|
|
|
left,
|
|
|
|
right,
|
2024-03-18 22:28:33 +00:00
|
|
|
args,
|
2024-03-18 22:35:19 +00:00
|
|
|
result_type: SnapshotChangeType::None,
|
2024-03-18 22:28:33 +00:00
|
|
|
results: SnapshotCompareResult {
|
|
|
|
created: vec![],
|
|
|
|
deleted: vec![],
|
|
|
|
changed: vec![],
|
|
|
|
},
|
|
|
|
}
|
2024-03-18 22:20:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Comparer for CompareMode {
|
2024-03-18 22:35:19 +00:00
|
|
|
fn run(&mut self) {
|
2024-03-18 22:54:57 +00:00
|
|
|
let selector = match self.args.get(4) {
|
2024-03-18 22:47:38 +00:00
|
|
|
None => {"none"}
|
|
|
|
Some(r) => { r }
|
|
|
|
};
|
|
|
|
|
2024-03-18 22:31:45 +00:00
|
|
|
let results = compare_snapshots(self.left.clone(), self.right.clone()).unwrap();
|
2024-03-18 22:35:19 +00:00
|
|
|
self.results = results.1;
|
|
|
|
self.result_type = results.0;
|
2024-03-18 22:47:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
match selector {
|
|
|
|
"created" => {
|
|
|
|
println!("Created: {:?}", self.results.created.len());
|
2024-03-18 22:49:23 +00:00
|
|
|
for file in self.results.created.iter() {
|
2024-03-18 22:47:38 +00:00
|
|
|
println!("{}", file);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"deleted" => {
|
|
|
|
println!("Deleted: {:?}", self.results.deleted.len());
|
2024-03-18 22:49:23 +00:00
|
|
|
for file in self.results.deleted.iter() {
|
2024-03-18 22:47:38 +00:00
|
|
|
println!("{}", file);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"changed" => {
|
|
|
|
println!("Changed: {:?}", self.results.changed.len());
|
2024-03-18 22:49:23 +00:00
|
|
|
for file in self.results.changed.iter() {
|
2024-03-18 22:47:38 +00:00
|
|
|
println!("{}", file);
|
|
|
|
}
|
|
|
|
}
|
2024-03-18 22:54:57 +00:00
|
|
|
"none" => {
|
2024-03-18 22:47:38 +00:00
|
|
|
println!("Created: {:?}", self.results.created.len());
|
|
|
|
println!("Deleted: {:?}", self.results.deleted.len());
|
|
|
|
println!("Changed: {:?}", self.results.changed.len());
|
2024-03-18 22:54:57 +00:00
|
|
|
},
|
|
|
|
_ => {
|
|
|
|
// println!("Created: {:?}", self.results.created.len());
|
|
|
|
// println!("Deleted: {:?}", self.results.deleted.len());
|
|
|
|
// println!("Changed: {:?}", self.results.changed.len());
|
2024-03-18 22:47:38 +00:00
|
|
|
}
|
|
|
|
}
|
2024-03-18 22:20:57 +00:00
|
|
|
}
|
|
|
|
}
|