use qrcode::QrCode;
use qrcode::render::unicode;
use std::io::{self, Read};
fn read_input() -> Option<String> {
if let Some(arg) = std::env::args().nth(1) {
return Some(arg);
}
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}");
}