This commit is contained in:
jamesk 2024-03-18 18:28:33 -04:00
parent 1456b67aa1
commit 95534c1621
3 changed files with 37 additions and 22 deletions

View File

@ -13,7 +13,16 @@ impl CompareMode {
pub fn new(args: Vec<String>, in_path: String, out_path: String) -> CompareMode { pub fn new(args: Vec<String>, in_path: String, out_path: String) -> CompareMode {
CompareMode { in_path, out_path, args, snapshot: Default::default() } CompareMode {
left: Default::default(),
right: Default::default(),
args,
results: SnapshotCompareResult {
created: vec![],
deleted: vec![],
changed: vec![],
},
}
} }
} }

View File

@ -4,7 +4,7 @@ pub mod comparemode;
use std::env::args; use std::env::args;
use crate::syscompare::{SysCompareApp}; use crate::syscompare::{SysCompareApp};
use crate::syscompare::CompareMode::{Compare, Create}; use crate::syscompare::SysCompareMode::{Compare, Create};
fn main() { fn main() {
let args: Vec<String> = args().collect(); let args: Vec<String> = args().collect();

View File

@ -2,61 +2,67 @@ use std::collections::HashMap;
use std::env::args; use std::env::args;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use Fasching::snapshot::Snapshot; use Fasching::snapshot::Snapshot;
use crate::comparemode::CompareMode;
use crate::createmode::CreateMode; use crate::createmode::CreateMode;
pub enum CompareMode { pub enum SysCompareMode {
Create, Create,
Compare Compare
} }
pub struct SysCompareApp { pub struct SysCompareApp {
mode: CompareMode, mode: SysCompareMode,
args: Vec<String>, args: Vec<String>,
comparatives: Arc<Mutex<HashMap<String, Snapshot>>> comparatives: Arc<Mutex<HashMap<String, Snapshot>>>
} }
impl SysCompareApp { impl SysCompareApp {
pub fn new(mode: CompareMode, 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");
match self.mode { match self.mode {
CompareMode::Create => { SysCompareMode::Create => {
let in_path = match self.args.get(2) { let in_path = match self.args.get(2) {
None => {panic!("Missing hash dir path as second argument")} None => {panic!("Missing hash dir path as second argument")}
Some(r) => { Some(r) => {not_empty(r)}
if r.replace("./", "").is_empty() {
panic!("Specify input file name")
} else {
r
}
}
}; };
let out_path = match self.args.get(3) { let out_path = match self.args.get(3) {
None => {panic!("Missing output path as third argument")} None => {panic!("Missing output path as third argument")}
Some(r) => { Some(r) => {not_empty(r)}
if r.replace("./", "").is_empty() {
panic!("Specify out path file name")
} else {
r
}
}
}; };
let create = CreateMode::new(self.args.clone(), in_path.clone(), out_path.clone()); let create = CreateMode::new(self.args.clone(), in_path.clone(), out_path.clone());
create.run() create.run()
} }
CompareMode::Compare => { SysCompareMode::Compare => {
let left = match self.args.get(2) {
None => {panic!("Missing hash dir path as second argument")}
Some(r) => {not_empty(r)}
};
let right = match self.args.get(3) {
None => {panic!("Missing output path as third argument")}
Some(r) => {not_empty(r)}
};
let compare = CompareMode::new(self.args.clone(), left, right);
} }
} }
} }
} }
fn not_empty(r: &String) -> String {
if r.replace("./", "").is_empty() {
panic!("Specify input file name")
} else {
r.to_string()
}
}
impl Default for SysCompareApp { impl Default for SysCompareApp {
fn default() -> Self { fn default() -> Self {
SysCompareApp { mode: CompareMode::Create, args: vec![], comparatives: Arc::new(Mutex::new(HashMap::new())) } SysCompareApp { mode: SysCompareMode::Create, args: vec![], comparatives: Arc::new(Mutex::new(HashMap::new())) }
} }
} }