comet 2.0.0

Local continuous integration
use std::convert::AsRef;
extern crate term;
use std::io::prelude::*;

pub enum MessageType {
    Info,
    Error,
    Success
}

pub fn stdout<P: AsRef<str>>(message: P) {
    print_message(message, MessageType::Info);
}

pub fn success<P: AsRef<str>>(message: P) {
    print_message(message, MessageType::Success);
}

pub fn stderr<P: AsRef<str>>(message: P) {
    print_message(message, MessageType::Error);
}

fn print_message<P: AsRef<str>>(message: P, message_type: MessageType) {
    match message_type {
        MessageType::Info => {
            println!("{}", message.as_ref());
        },
        MessageType::Error => {
            let mut error_terminal = term::stderr().unwrap();
            error_terminal.fg(term::color::RED).unwrap();
            writeln!(error_terminal, "{}", message.as_ref()).unwrap();
            error_terminal.reset().unwrap();
            error_terminal.flush().unwrap();
        },
        MessageType::Success => {
            let mut success_terminal = term::stdout().unwrap();
            success_terminal.fg(term::color::GREEN).unwrap();
            writeln!(success_terminal, "{}", message.as_ref()).unwrap();
            success_terminal.reset().unwrap();
            success_terminal.flush().unwrap();
        },
    }
}