This commit is contained in:
jkoonts 2024-03-26 13:14:24 -04:00
parent 9e76bb5507
commit ec6abc9050
4 changed files with 50 additions and 39 deletions

View File

@ -1,7 +1,6 @@
use Fasching::{compare_snapshots, create_snapshot, import_snapshot};
use Fasching::hasher::HashType::BLAKE3;
use Fasching::snapshot::{Snapshot, SnapshotChangeType, SnapshotCompareResult};
use crate::syscompare::Comparer; use crate::syscompare::Comparer;
use Fasching::snapshot::{Snapshot, SnapshotChangeType, SnapshotCompareResult};
use Fasching::{compare_snapshots, import_snapshot};
pub struct CompareMode { pub struct CompareMode {
left: Snapshot, left: Snapshot,
@ -13,7 +12,6 @@ pub struct CompareMode {
impl CompareMode { impl CompareMode {
pub fn new(args: Vec<String>, left: String, right: String) -> CompareMode { pub fn new(args: Vec<String>, left: String, right: String) -> CompareMode {
let left = import_snapshot(left); let left = import_snapshot(left);
let right = import_snapshot(right); let right = import_snapshot(right);
@ -34,8 +32,8 @@ impl CompareMode {
impl Comparer for CompareMode { impl Comparer for CompareMode {
fn run(&mut self) { fn run(&mut self) {
let selector = match self.args.get(4) { let selector = match self.args.get(4) {
None => {"none"} None => "none",
Some(r) => { r } Some(r) => r,
}; };
let results = match compare_snapshots(self.left.clone(), self.right.clone()) { let results = match compare_snapshots(self.left.clone(), self.right.clone()) {
@ -45,16 +43,15 @@ impl Comparer for CompareMode {
self.results = results.1; self.results = results.1;
self.result_type = results.0; self.result_type = results.0;
match selector { match selector {
"created" => { "created" => {
self.results.created.iter().for_each(|e| println!("{e}")); self.results.created.iter().for_each(|e| println!("{e}"));
println!("Created: {:?}", self.results.created.len()); println!("Created: {:?}", self.results.created.len());
}, }
"deleted" => { "deleted" => {
self.results.deleted.iter().for_each(|e| println!("{e}")); self.results.deleted.iter().for_each(|e| println!("{e}"));
println!("Deleted: {:?}", self.results.deleted.len()); println!("Deleted: {:?}", self.results.deleted.len());
}, }
"changed" => { "changed" => {
self.results.changed.iter().for_each(|e| println!("{e}")); self.results.changed.iter().for_each(|e| println!("{e}"));
println!("Changed: {:?}", self.results.changed.len()); println!("Changed: {:?}", self.results.changed.len());
@ -63,7 +60,7 @@ impl Comparer for CompareMode {
println!("Created: {:?}", self.results.created.len()); println!("Created: {:?}", self.results.created.len());
println!("Deleted: {:?}", self.results.deleted.len()); println!("Deleted: {:?}", self.results.deleted.len());
println!("Changed: {:?}", self.results.changed.len()); println!("Changed: {:?}", self.results.changed.len());
}, }
_ => { _ => {
// println!("Created: {:?}", self.results.created.len()); // println!("Created: {:?}", self.results.created.len());
// println!("Deleted: {:?}", self.results.deleted.len()); // println!("Deleted: {:?}", self.results.deleted.len());
@ -75,11 +72,11 @@ impl Comparer for CompareMode {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::env;
use std::fmt::format;
use crate::comparemode::CompareMode; use crate::comparemode::CompareMode;
use crate::createmode::CreateMode; use crate::createmode::CreateMode;
use crate::syscompare::Comparer; use crate::syscompare::Comparer;
use std::env;
use std::fmt::format;
#[test] #[test]
fn compare_mode() { fn compare_mode() {

View File

@ -1,16 +1,17 @@
use crate::print_help;
use crate::syscompare::Comparer;
use std::process::exit; use std::process::exit;
use Fasching::{create_snapshot, export_snapshot};
use Fasching::hasher::HashType; use Fasching::hasher::HashType;
use Fasching::hasher::HashType::BLAKE3; use Fasching::hasher::HashType::BLAKE3;
use Fasching::snapshot::Snapshot; use Fasching::snapshot::Snapshot;
use crate::print_help; use Fasching::{create_snapshot, export_snapshot};
use crate::syscompare::Comparer;
pub struct CreateMode { pub struct CreateMode {
snapshot_path: String, snapshot_path: String,
root_path: String, root_path: String,
#[allow(unused)]
args: Vec<String>, args: Vec<String>,
snapshot: Snapshot snapshot: Snapshot,
} }
impl CreateMode { impl CreateMode {
@ -22,7 +23,12 @@ impl CreateMode {
} }
let bind = root_path.clone(); let bind = root_path.clone();
let rp = bind.as_str(); let rp = bind.as_str();
CreateMode { args, snapshot_path, root_path, snapshot: create_snapshot(rp, HashType::MD5, vec![]) } CreateMode {
args,
snapshot_path,
root_path,
snapshot: create_snapshot(rp, HashType::MD5, vec![]),
}
} }
} }
@ -33,6 +39,6 @@ impl Comparer for CreateMode {
if let Ok(e) = snapshot.file_hashes.lock() { if let Ok(e) = snapshot.file_hashes.lock() {
println!("Total FileHash Entries {}", e.len()); println!("Total FileHash Entries {}", e.len());
} }
let _ = export_snapshot(self.snapshot.clone(), self.snapshot_path.clone(), true); export_snapshot(self.snapshot.clone(), self.snapshot_path.clone(), true);
} }
} }

View File

@ -1,11 +1,11 @@
pub mod syscompare;
pub mod createmode;
pub mod comparemode; pub mod comparemode;
pub mod createmode;
pub mod syscompare;
use crate::syscompare::SysCompareApp;
use crate::syscompare::SysCompareMode::{Compare, Create};
use std::env::args; use std::env::args;
use std::process::exit; use std::process::exit;
use crate::syscompare::{SysCompareApp};
use crate::syscompare::SysCompareMode::{Compare, Create};
fn main() { fn main() {
let args: Vec<String> = args().collect(); let args: Vec<String> = args().collect();
@ -20,8 +20,8 @@ fn main() {
// app mode // app mode
let m = mode.as_str(); let m = mode.as_str();
let app_mode = match m { let app_mode = match m {
"create" => { Create }, "create" => Create,
"compare" => { Compare }, "compare" => Compare,
_ => { _ => {
println!("Invalid MODE argument"); println!("Invalid MODE argument");
print_help(); print_help();

View File

@ -1,27 +1,30 @@
use std::collections::HashMap;
use std::env::args;
use std::process::exit;
use std::sync::{Arc, Mutex};
use Fasching::snapshot::Snapshot;
use crate::comparemode::CompareMode; use crate::comparemode::CompareMode;
use crate::createmode::CreateMode; use crate::createmode::CreateMode;
use crate::print_help; use crate::print_help;
use std::collections::HashMap;
use std::process::exit;
use std::sync::{Arc, Mutex};
use Fasching::snapshot::Snapshot;
pub enum SysCompareMode { pub enum SysCompareMode {
Create, Create,
Compare Compare,
} }
pub struct SysCompareApp { pub struct SysCompareApp {
mode: SysCompareMode, mode: SysCompareMode,
args: Vec<String>, args: Vec<String>,
comparatives: Arc<Mutex<HashMap<String, Snapshot>>> #[allow(unused)]
comparatives: Arc<Mutex<HashMap<String, Snapshot>>>,
} }
impl SysCompareApp { impl SysCompareApp {
pub fn new(mode: SysCompareMode, args: Vec<String>) -> SysCompareApp { pub fn new(mode: SysCompareMode, args: Vec<String>) -> SysCompareApp {
SysCompareApp { mode, args, comparatives: Arc::new(Mutex::new(HashMap::new())) } SysCompareApp {
mode,
args,
comparatives: Arc::new(Mutex::new(HashMap::new())),
}
} }
pub fn run(&self) { pub fn run(&self) {
println!("running"); println!("running");
@ -33,7 +36,7 @@ impl SysCompareApp {
print_help(); print_help();
exit(0); exit(0);
} }
Some(r) => {not_empty(r)} Some(r) => not_empty(r),
}; };
let root_dir = match self.args.get(3) { let root_dir = match self.args.get(3) {
None => { None => {
@ -41,9 +44,10 @@ impl SysCompareApp {
print_help(); print_help();
exit(0); exit(0);
} }
Some(r) => {not_empty(r)} Some(r) => not_empty(r),
}; };
let mut create = CreateMode::new(self.args.clone(), snapshot_path.clone(), root_dir.clone()); let mut create =
CreateMode::new(self.args.clone(), snapshot_path.clone(), root_dir.clone());
create.run() create.run()
} }
SysCompareMode::Compare => { SysCompareMode::Compare => {
@ -53,7 +57,7 @@ impl SysCompareApp {
print_help(); print_help();
exit(0); exit(0);
} }
Some(r) => {not_empty(r)} Some(r) => not_empty(r),
}; };
let right = match self.args.get(3) { let right = match self.args.get(3) {
None => { None => {
@ -61,7 +65,7 @@ impl SysCompareApp {
print_help(); print_help();
exit(0); exit(0);
} }
Some(r) => {not_empty(r)} Some(r) => not_empty(r),
}; };
let mut compare = CompareMode::new(self.args.clone(), left, right); let mut compare = CompareMode::new(self.args.clone(), left, right);
@ -83,7 +87,11 @@ fn not_empty(r: &String) -> String {
impl Default for SysCompareApp { impl Default for SysCompareApp {
fn default() -> Self { fn default() -> Self {
SysCompareApp { mode: SysCompareMode::Create, args: vec![], comparatives: Arc::new(Mutex::new(HashMap::new())) } SysCompareApp {
mode: SysCompareMode::Create,
args: vec![],
comparatives: Arc::new(Mutex::new(HashMap::new())),
}
} }
} }