#![allow(dead_code)]
#![allow(unused_must_use)]
use clap::{Parser, Subcommand};
use std::time::SystemTime;
use FileSorterX::{create_files, custom_sort, sort_files, update_filesorterx};
mod tests;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Cli {
#[command(subcommand)]
command: Option<Commands>,
}
#[derive(Subcommand)]
enum Commands {
Sort {
#[arg(short, long, default_value_t = false)]
verbose: bool,
#[arg(short, long, default_value_t = false)]
log: bool,
},
Create {
#[arg(short, long)]
amount: u32,
},
Customsort {
#[arg(short, long)]
input: String,
#[arg(short, long)]
output: String,
#[arg(short, long)]
extension: String,
},
Update {},
}
fn main() {
let start = SystemTime::now();
let cli = Cli::parse();
match &cli.command {
Some(Commands::Sort { verbose, log }) => {
sort_files(verbose, log);
let end = SystemTime::now();
let duration = end.duration_since(start).unwrap();
println!("Time taken: {:?}", duration);
}
Some(Commands::Customsort {
input,
output,
extension,
}) => {
custom_sort(input, output, extension);
}
Some(Commands::Create { amount }) => {
create_files(amount + 1);
let end = SystemTime::now();
let duration = end.duration_since(start).unwrap();
println!("Time taken: {:?}", duration);
}
Some(Commands::Update { .. }) => {
update_filesorterx().expect("Failed to update FileSorterX");
}
None => todo!(),
}
}