pr_01m3xsjv8netd8ept0sbk2rms3/src/main.rs

41 lines1,065 bytesCodeBlame
use std::env;
use std::process;

use hello::greeting;

fn main() {
    let mut args = env::args().skip(1);
    let mut lang = "en".to_string();
    let mut name = None;

    // Parse arguments
    while let Some(arg) = args.next() {
        if arg == "--lang" {
            lang = match args.next() {
                Some(l) => l,
                None => {
                    eprintln!("Error: --lang requires an argument");
                    process::exit(1);
                }
            };
        } else {
            name = Some(arg);
            break;
        }
    }

    // Get the name, or fall back to USER env var, or "world"
    let name = name
        .or_else(|| env::var("USER").ok())
        .unwrap_or_else(|| "world".to_owned());

    // Get the greeting, or print error and exit
    match greeting(&name, &lang) {
        Some(msg) => println!("{}", msg),
        None => {
            eprintln!("Error: unknown language '{}'", lang);
            eprintln!("Supported languages: en, es, fr");
            process::exit(1);
        }
    }
}