use std::path::PathBuf;
use clap::builder::Styles;
use clap::builder::styling::{AnsiColor, Effects, Style};
use clap::Parser;
#[derive(Parser, Debug)]
#[command(about, version, styles = CARGO_STYLING)]
pub struct Arguments {
#[arg(long, short, default_value = "./favicons")]
pub output_dir: PathBuf,
#[arg(long, short = 'c', default_value_t = false)]
pub no_html_copy: bool,
#[arg(long, required = false)]
pub short_name: Option<String>,
#[arg(long, required = false, default_value_t = String::from("#FFFFFF"))]
pub app_color: String,
#[arg(long, required = false, default_value_t = String::from("."))]
pub start_url: String,
#[arg(short, long, required = false, default_value_t = String::from("/"))]
pub path: String,
#[arg(short, long, required = false, default_value_t = false)]
pub silent: bool,
pub master_image: PathBuf,
pub app_name: String
}
pub(crate) const HEADER: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
pub(crate) const USAGE: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
pub(crate) const LITERAL: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
pub(crate) const PLACEHOLDER: Style = AnsiColor::Cyan.on_default();
pub(crate) const ERROR: Style = AnsiColor::Red.on_default().effects(Effects::BOLD);
pub(crate) const VALID: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
pub(crate) const INVALID: Style = AnsiColor::Yellow.on_default().effects(Effects::BOLD);
pub(crate) const CARGO_STYLING: Styles = Styles::styled()
.header(HEADER)
.usage(USAGE)
.literal(LITERAL)
.placeholder(PLACEHOLDER)
.error(ERROR)
.valid(VALID)
.invalid(INVALID);