//! `relicario rate` — score a passphrase via zxcvbn. use anyhow::Result; pub fn cmd_rate(passphrase: String) -> Result<()> { let pw: String = if passphrase == "-" { use std::io::BufRead; let stdin = std::io::stdin(); let mut line = String::new(); stdin.lock().read_line(&mut line)?; line.trim_end_matches(&['\r', '\n'][..]).to_string() } else { passphrase }; let est = relicario_core::generators::rate_passphrase(&pw); let label = match est.score { 0 => "very weak", 1 => "weak", 2 => "fair", 3 => "good", 4 => "strong", _ => "?", }; println!("score: {}/4 ({})", est.score, label); println!("guesses: ~10^{:.1}", est.guesses_log10); println!("note: init requires score ≥ 3 (see `relicario init`)"); Ok(()) }