use clap::builder::styling::{AnsiColor, Effects, Styles};
use clap::Parser;
fn styles() -> Styles {
Styles::styled()
.header(AnsiColor::Red.on_default() | Effects::BOLD)
.usage(AnsiColor::Red.on_default() | Effects::BOLD)
.literal(AnsiColor::Blue.on_default() | Effects::BOLD)
.error(AnsiColor::Red.on_default() | Effects::BOLD)
.placeholder(AnsiColor::Green.on_default())
}
#[derive(Parser, Debug)]
#[command(
author = "Mahmoud Harmouch",
version,
about = "\x1b[38;5;214mThe ultimate steganography swiss knife army tool.\x1b[0m",
name = "stegano",
styles = styles()
)]
pub struct Cli {
#[arg(short = 'i', long = "input")]
pub input: String,
#[arg(short = 'o', long = "output", default_value_t = String::from("output.png"))]
pub output: String,
#[arg(short = 'm', long = "meta", default_value_t = false)]
pub meta: bool,
#[arg(short = 'n', long = "nb-chunks", default_value_t = 10)]
pub nb_chunks: usize,
#[arg(short = 'c', long = "start", default_value_t = 1)]
pub start_chunk: usize,
#[arg(short = 'u', long = "end", default_value_t = 11)]
pub end_chunk: usize,
#[arg(short = 's', long = "suppress", default_value_t = false)]
pub suppress: bool,
#[arg(short = 'f', long = "offset", default_value_t = 10)]
pub offset: usize,
#[arg(short = 'j', long = "inject", default_value_t = false)]
pub inject: bool,
#[arg(short = 'p', long = "payload", default_value_t = String::from("hello"))]
pub payload: String,
#[arg(short = 't', long = "type", default_value_t = String::from("PNG"))]
pub r#type: String,
#[arg(short = 'e', long = "encode", default_value_t = false)]
pub encode: bool,
#[arg(short = 'd', long = "decode", default_value_t = false)]
pub decode: bool,
#[arg(short = 'k', long = "key", default_value_t = String::from("key"))]
pub key: String,
}