hello/src/main.rs

48 lines1,204 bytesCodeBlame
1use std::{env, process};
2
3use hello::{greeting_in, loud, parse_args, part, reverse, shout, wave, whisper};
4
5fn main() {
6 let options = match parse_args(env::args().skip(1)) {
7 Ok(options) => options,
8 Err(message) => {
9 eprintln!("error: {message}");
10 process::exit(2);
11 }
12 };
13 if options.version {
14 println!("{}", env!("CARGO_PKG_VERSION"));
15 return;
16 }
17 if options.quiet {
18 return;
19 }
20 // The name given, or whoever is signed in.
21 let name = options
22 .name
23 .or_else(|| env::var("USER").ok())
24 .unwrap_or_else(|| "world".to_owned());
25 let name = if options.reverse { reverse(&name) } else { name };
26 let message = greeting_in(&name, options.lang);
27 let message = if options.loud {
28 loud(&message)
29 } else {
30 message
31 };
32 let line = if options.shout {
33 shout(&message)
34 } else if options.whisper {
35 whisper(&message)
36 } else {
37 message
38 };
39 for _ in 0..options.times {
40 println!("{line}");
41 }
42 if options.wave {
43 println!("{}", wave());
44 }
45 if options.bye {
46 println!("{}", part(&name));
47 }
48}