use clap::{Parser, ValueEnum}; use qrcode_generator::QrCodeEcc; #[derive(Parser)] #[command(author, version, about, long_about = None)] pub struct Cli { /// The desired name of the output file, sans extension. #[arg(short, long, default_value = "vcard")] pub output_name: String, /// The desired output format of the QR code. #[arg(short, long, value_enum, default_value_t=OutputFormat::Png)] pub format: OutputFormat, /// The desired error correction level. /// Higher levels generate larger QR codes, but make it more likely /// the code will remain readable if it is damaged. #[arg(short, long, value_enum, default_value_t=ErrorCorrection::Low)] pub error_correction: ErrorCorrection, /// The size of the output image, in pixels. #[arg(short, long, default_value = "1024")] pub size: usize, } #[derive(Debug, Clone, ValueEnum)] pub enum ErrorCorrection { Low, Medium, High, Max, } #[allow(clippy::from_over_into)] impl Into for ErrorCorrection { fn into(self) -> QrCodeEcc { match self { ErrorCorrection::Low => QrCodeEcc::Low, ErrorCorrection::Medium => QrCodeEcc::Medium, ErrorCorrection::High => QrCodeEcc::Quartile, ErrorCorrection::Max => QrCodeEcc::High, } } } #[derive(Debug, Clone, ValueEnum)] pub enum OutputFormat { Png, Svg, }