qrterm 0.1.1

Lightweight program to create QR Codes
use qrcode::QrCode;
use qrcode::render::unicode;
use std::io::{self, Read};

fn read_input() -> Option<String> {
    // 1️⃣ Prefer CLI argument
    if let Some(arg) = std::env::args().nth(1) {
        return Some(arg);
    }

    // 2️⃣ Fallback to stdin (pipe / redirect)
    let mut input = String::new();
    if io::stdin().read_to_string(&mut input).is_ok() {
        let trimmed = input.trim();
        if !trimmed.is_empty() {
            return Some(trimmed.to_string());
        }
    }

    None
}

fn main() {
    let data = match read_input() {
        Some(d) => d,
        None => {
            eprintln!("Usage: qrterm <text-or-url>");
            eprintln!("       echo <text> | qrterm");
            std::process::exit(1);
        }
    };

    let code = QrCode::new(data).expect("Failed to generate QR");

    let qr = code
        .render::<unicode::Dense1x2>()
        .dark_color(unicode::Dense1x2::Dark)
        .light_color(unicode::Dense1x2::Light)
        .build();

    println!("{qr}");
}