use crate::options::sub_command::Commands;
use clap::{ArgAction, Parser};
#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
#[command(arg_required_else_help = true)]
pub struct Cli {
#[clap(subcommand)]
pub command: Option<Commands>,
#[clap(short, long, default_value = "")]
pub url: String,
#[clap(short, long)]
pub respect_robots_txt: bool,
#[clap(short, long)]
pub subdomains: bool,
#[clap(short, long)]
pub tld: bool,
#[clap(short = 'H', long)]
pub return_headers: bool,
#[clap(short, long)]
pub verbose: bool,
#[clap(short = 'D', long)]
pub delay: Option<u64>,
#[clap(long)]
pub limit: Option<u32>,
#[clap(long)]
pub blacklist_url: Option<String>,
#[clap(short, long)]
pub agent: Option<String>,
#[clap(short = 'B', long)]
pub budget: Option<String>,
#[clap(short = 'E', long)]
pub external_domains: Option<Vec<String>>,
#[clap(short = 'b', long)]
pub block_images: bool,
#[clap(short, long)]
pub depth: Option<usize>,
#[clap(long)]
pub accept_invalid_certs: bool,
#[clap(long)]
pub full_resources: bool,
#[clap(long, conflicts_with = "http")]
pub headless: bool,
#[clap(long, action = ArgAction::SetTrue, conflicts_with = "headless")]
pub http: bool,
#[clap(short, long)]
pub proxy_url: Option<String>,
#[clap(long)]
pub spider_cloud_key: Option<String>,
#[clap(long)]
pub cache_namespace: Option<String>,
#[clap(long, default_value = "proxy")]
pub spider_cloud_mode: Option<String>,
#[clap(long)]
pub spider_cloud_browser: bool,
#[clap(long)]
pub wait_for_idle_network: Option<u64>,
#[clap(long)]
pub wait_for_idle_network0: Option<u64>,
#[clap(long)]
pub wait_for_almost_idle_network0: Option<u64>,
#[clap(long)]
pub wait_for_idle_dom: Option<String>,
#[clap(long)]
pub wait_for_selector: Option<String>,
#[clap(long)]
pub wait_for_delay: Option<u64>,
#[clap(long)]
pub chrome_connection_url: Option<String>,
#[clap(long)]
pub cookie: Option<String>,
#[clap(long)]
pub stealth: bool,
#[clap(short = 'W', long)]
pub warc: Option<String>,
#[clap(long, default_value = "raw")]
pub return_format: String,
}