use std::process;//allows for some better error handling

mod lib; //allows access to lib.rs
use lib::Config;

/// main function
/// responsibilities:
/// - Calling the command line logic with the argument values
/// - Setting up any other configuration
/// - Calling a run function in lib.rs
/// - Handling the error if run returns an error
fn main() {
    //greet user
    welcome();

    // set up other configuration
    let mut config = Config::new().unwrap_or_else(|err| {
        eprintln!("Problem configuring program: {}", err);
        process::exit(1);
    });

    // run the program
    if let Err(e) = lib::run(&mut config) {
        eprintln!("Application Error: {}", e); //use the eprintln! macro to output to standard error
        process::exit(1); //exit the program with an error code
    }

    //end of program
    println!("THANKS FOR PLAYING!");
}

/// print the welcome message
fn welcome() {
    println!("
                             MASTERMIND
              CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY


    ");
}
