use clap::Parser;
use getset::Getters;

use super::Commands;


#[derive(Parser, Getters)]
#[getset(get="pub")]
#[clap(name="ntdsextract2", author, version, about, long_about = None)]
pub struct Args {
    #[clap(subcommand)]
    pub(crate) command: Commands,

    /// name of the file to analyze
    pub(crate) ntds_file: String,

    #[clap(flatten)]
    pub(crate) verbose: clap_verbosity_flag::Verbosity,

    #[clap(long="use-cache", default_value_t=false)]
    /// set this flag if you want to use a cache file, to speed up you work
    /// with ntdsextract2
    pub (crate) use_cache: bool,

    /// cache file to use. If you use the cache, but don't specify a filename,
    /// ntdsextract2 will generate a filename and store a cache in /tmp
    /// 
    /// Be aware that ntdsextract2 will overwrite this file at any time without
    /// any warning!!!
    #[clap(long="cache-file")]
    pub (crate) cache_file: Option<String>,
}
