feat: add external vcard-cli

This commit is contained in:
2022-11-20 20:39:30 +08:00
parent 8979029e29
commit 820417832b
10 changed files with 1819 additions and 1 deletions

View File

@@ -0,0 +1,47 @@
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<QrCodeEcc> 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,
}