This commit is contained in:
jamesk 2024-03-28 19:05:09 -04:00
parent ec6abc9050
commit feecfb4948
3 changed files with 49 additions and 13 deletions

View File

@ -7,5 +7,6 @@ edition = "2021"
[dependencies]
Fasching = "0.1.19"
clap = { version = "4.5.4", features = ["derive"] }
#Fasching = {path = "../Fasching/"}
whoami = "1.5.1"

View File

@ -1,35 +1,43 @@
pub mod comparemode;
pub mod createmode;
pub mod syscompare;
mod options;
use crate::syscompare::SysCompareApp;
use crate::syscompare::SysCompareMode::{Compare, Create};
use std::env::args;
use std::process::exit;
use clap::{FromArgMatches, Parser};
use crate::options::{Arguments, Commands};
fn main() {
let options = Arguments::parse();
let args: Vec<String> = args().collect();
// println!("{:#?}", args); // testing
let app = match args.get(1) {
let app = match options.command {
None => {
print_help();
exit(0);
}
Some(mode) => {
Some(Commands::Create { root_dir, output_path }) => {
// app mode
let m = mode.as_str();
let app_mode = match m {
"create" => Create,
"compare" => Compare,
_ => {
println!("Invalid MODE argument");
print_help();
exit(0);
}
};
SysCompareApp::new(app_mode, args)
// let app_mode = match m {
// "create" => Create,
// "compare" => Compare,
// _ => {
// println!("Invalid MODE argument");
// print_help();
// exit(0);
// }
// };
SysCompareApp::new(Create, args)
},
Some(Commands::Compare { left, right }) => {
SysCompareApp::new(Compare, args)
}
};

27
src/options.rs Normal file
View File

@ -0,0 +1,27 @@
use clap::{Command, Parser, Subcommand};
use crate::syscompare::SysCompareMode;
#[derive(Parser)]
pub struct Arguments {
#[command(subcommand)]
pub command: Option<Commands>,
pub input_path: Option<String>,
pub output_path: Option<String>,
pub show: Option<String>,
}
#[derive(Subcommand)]
pub enum Commands {
Create {
#[arg(short, long)]
root_dir: String,
#[arg(short, long)]
output_path: String,
},
Compare {
#[arg(short, long)]
left: String,
#[arg(short, long)]
right: String,
},
}