use std::num::NonZeroUsize;
use std::path::PathBuf;
use clap::builder::styling::{AnsiColor, Effects, Styles};
use clap::{ArgAction, Parser};
use crate::format::Format;
use crate::upload::Hosting;
#[derive(Parser, Debug)]
#[command(version, about, max_term_width = 120, styles = STYLES)]
pub struct Args {
#[arg(required = true)]
pub images: Vec<PathBuf>,
#[arg(short = 'H', long, default_value_t = Hosting::Imgur)]
pub hosting: Hosting,
#[arg(short, long, default_value_t = Format::Plain)]
pub format: Format,
#[arg(short, long)]
pub thumbnail: bool,
#[arg(short, long)]
pub notify: bool,
#[arg(long = "no-clipboard")]
pub no_clipboard: bool,
#[arg(long)]
pub env_file: Option<PathBuf>,
#[arg(short, long, default_value_t = NonZeroUsize::new(4).expect("nonzero"))]
pub jobs: NonZeroUsize,
#[arg(short, long, action = ArgAction::Count)]
pub verbose: u8,
}
const STYLES: Styles = Styles::styled()
.header(AnsiColor::Green.on_default().effects(Effects::BOLD))
.usage(AnsiColor::Green.on_default().effects(Effects::BOLD))
.literal(AnsiColor::Cyan.on_default().effects(Effects::BOLD))
.placeholder(AnsiColor::Cyan.on_default());