knil 0.1.3

An environment based logger, built with simplicity in mind.
Documentation
use std::env;
use std::io;

#[cfg(not(feature = "loadenv"))]
pub fn read_env() -> io::Result<usize> {
	let environment = env::var("RUST_ENV").unwrap_or_else(|_| "development".to_string());

	parse_env(&environment)
}

#[cfg(feature = "loadenv")]
pub fn read_env(path: Option<&str>) -> io::Result<usize> {
	if path.is_none() {
		dotenv::dotenv().ok();
	} else {
		dotenv::from_path(path.unwrap()).expect("cannot find \".dotenv\" file.");
	}

	let environment = env::var("RUST_ENV").unwrap_or("development".to_string());

	parse_env(&environment)
}

fn parse_env(e: &str) -> io::Result<usize> {
	match e.parse::<usize>() {
		Ok(env_lvl) => Ok(env_lvl),
		Err(_) => match e.to_lowercase().as_str() {
			"minimum" | "min" => Ok(0_usize),
			"maximum" | "max" => Ok(4_usize),
			"staging" | "stage" => Ok(3_usize),
			"production" | "prod" => Ok(2_usize),
			"development" | "dev" => Ok(4_usize),
			_ => Err(io::Error::new(
				io::ErrorKind::Other,
				"Invalid environment level.",
			)),
		},
	}
}