mod commands;
mod scanner;
mod cleaners;
mod history;
mod cache;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(name = "sweep")]
#[command(about = "๐งน Fast system cleaner for macOS and Linux. 10x faster than shell-based tools.")]
#[command(version)]
struct Cli {
#[command(subcommand)]
command: Option<Commands>,
}
#[derive(Subcommand)]
enum Commands {
Scan {
#[arg(default_value = "~")]
path: String,
},
Clean {
#[arg(long)]
dry_run: bool,
},
Ai {
#[arg(long)]
dry_run: bool,
},
Docker {
#[arg(long)]
dry_run: bool,
},
Dev {
#[arg(long)]
dry_run: bool,
#[arg(long, default_value = "7")]
older_than: u64,
},
Uninstall {
#[arg(long)]
dry_run: bool,
},
Optimize {
#[arg(long)]
dry_run: bool,
},
Installer {
#[arg(long)]
dry_run: bool,
},
Status,
History,
Completion {
#[arg(value_enum)]
shell: clap_complete::Shell,
},
}
fn main() {
let cli = Cli::parse();
match cli.command {
Some(Commands::Scan { path }) => commands::scan::run(&path),
Some(Commands::Clean { dry_run }) => commands::clean::run(dry_run),
Some(Commands::Ai { dry_run }) => commands::ai::run(dry_run),
Some(Commands::Docker { dry_run }) => commands::docker::run(dry_run),
Some(Commands::Dev { dry_run, older_than }) => commands::dev::run(dry_run, older_than),
Some(Commands::Uninstall { dry_run }) => commands::uninstall::run(dry_run),
Some(Commands::Optimize { dry_run }) => commands::optimize::run(dry_run),
Some(Commands::Installer { dry_run }) => commands::installer::run(dry_run),
Some(Commands::Status) => commands::status::run(),
Some(Commands::History) => {
commands::ui::print_header("\x1b[1mOperation History\x1b[0m");
history::show_history();
println!();
},
Some(Commands::Completion { shell }) => {
use clap::CommandFactory;
clap_complete::generate(shell, &mut Cli::command(), "sweep", &mut std::io::stdout());
},
None => commands::interactive::run(),
}
}