karaorust 0.0.1

Karoke on console
Documentation
extern crate karaorust;

use std::env;
use std::process;

use karaorust::{ parse_karaoke_file };

fn print_usage(program: &str) {
    let brief = format!("Usage: {} FILE", program);
    println!("{}", &brief);
}

fn check_argv(mut argv: env::Args) -> Result<String, String> {
    argv.nth(1)
        .ok_or("Please give at least one argument".to_owned())
}

pub fn input_from_args(args: env::Args, program: &str) -> String {
    let input = match check_argv(args) {
        Ok(n) => n,
        Err(err) => {
            println!("Error: {}", err);
            print_usage(&program);
            process::exit(1);
        },
    };
    input
}

#[cfg(not(test))]
fn main() {
    let args = env::args();
    let args_vec: Vec<String> = args.collect();
    let program = args_vec[0].clone();

    let input = input_from_args(env::args(), &program);
    parse_karaoke_file(&input);
}