use crate::targets::{parse_targets, Target};
use clap::Parser;
use clap_complete::Shell;
use std::{collections::HashSet, path::PathBuf};
#[derive(Debug, Parser)]
pub struct CompletionsOpts {
#[arg(short = 'l', long, default_value = "info", value_parser = ["debug", "info", "warn", "error"])]
pub log_level: String,
pub shell: Shell,
}
#[derive(Debug, Parser)]
pub struct InstallOpts {
#[arg(short = 'd', long, value_parser = ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu", "x86_64-pc-windows-msvc", "x86_64-pc-windows-gnu" , "x86_64-apple-darwin" , "aarch64-apple-darwin"])]
pub default_host: Option<String>,
#[arg(short = 'f', long)]
pub export_file: Option<PathBuf>,
#[arg(short = 'e', long)]
pub extended_llvm: bool,
#[arg(short = 'l', long, default_value = "info", value_parser = ["debug", "info", "warn", "error"])]
pub log_level: String,
#[arg(short = 'a', long, default_value = "esp")]
pub name: String,
#[arg(short = 'n', long, default_value = "nightly")]
pub nightly_version: String,
#[arg(short = 'k', long)]
pub skip_version_parse: bool,
#[arg(short = 's', long)]
pub std: bool,
#[arg(short = 't', long, default_value = "all", value_parser = parse_targets)]
pub targets: HashSet<Target>,
#[arg(short = 'v', long)]
pub toolchain_version: Option<String>,
}
#[derive(Debug, Parser)]
pub struct UninstallOpts {
#[arg(short = 'l', long, default_value = "info", value_parser = ["debug", "info", "warn", "error"])]
pub log_level: String,
#[arg(short = 'a', long, default_value = "esp")]
pub name: String,
}