use std::path::PathBuf;
use clap::{Parser, Subcommand};
const DATABASE_FILE: &str = "sdoppia.db";
pub fn default_db_path() -> PathBuf {
dirs::data_dir()
.unwrap_or_else(|| PathBuf::from("."))
.join("sdoppia")
.join(DATABASE_FILE)
}
#[derive(Parser)]
#[command(
author = env!("CARGO_PKG_AUTHORS"),
version = env!("CARGO_PKG_VERSION"),
about = "Duplicate files finder",
long_about = "A CLI tool to scan directories, hash files, and find duplicates"
)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
#[arg(short, long, global = true)]
pub verbose: bool,
}
#[derive(Subcommand)]
pub enum Commands {
Scan {
#[arg(required = true)]
paths: Vec<PathBuf>,
#[arg(short, long)]
db: Option<PathBuf>,
#[arg(short = 'L', long)]
follow_links: bool,
#[arg(short = 'r', long, default_value = "false")]
rehash: bool,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(short, long, default_value_t = 0)]
min_size: i64,
},
Clear {
#[arg(short, long)]
db: Option<PathBuf>,
},
Stats {
#[arg(short, long)]
db: Option<PathBuf>,
},
}