#![deny(dead_code)]
#![deny(missing_docs)]
#![deny(unreachable_patterns)]
#![deny(unused_extern_crates)]
#![deny(unused_imports)]
#![deny(unused_qualifications)]
#![deny(unused_qualifications)]
use env_logger;
use std::error::Error;
use std::fmt::{Display, Debug, Formatter};
use std::{env, fmt};
mod boolean;
mod duration;
mod pathbuf;
mod string;
mod num;
pub const ENV_RUST_LOG : &'static str = "RUST_LOG";
const DEFAULT_LOG_LEVEL: &'static str = "info";
#[derive(Debug)]
pub enum EnvError {
NotUnicode,
ParseError {
reason: String
},
RequiredNotPresent,
}
impl Display for EnvError {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "EnvError::ParseError")
}
}
impl Error for EnvError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
None
}
}
pub use boolean::get_env_bool_optional;
pub use boolean::get_env_bool_or_default;
pub use boolean::get_env_bool_required;
pub use duration::get_env_duration_seconds_optional;
pub use duration::get_env_duration_seconds_or_default;
pub use duration::get_env_duration_seconds_required;
pub use num::get_env_num;
pub use pathbuf::get_env_pathbuf_optional;
pub use pathbuf::get_env_pathbuf_or_default;
pub use pathbuf::get_env_pathbuf_required;
pub use string::get_env_string_optional;
pub use string::get_env_string_or_default;
pub use string::get_env_string_required;
pub fn init_env_logger(default_if_absent: Option<&str>) {
if env::var(ENV_RUST_LOG)
.as_ref()
.ok()
.is_none()
{
let default_log_level = default_if_absent.unwrap_or(DEFAULT_LOG_LEVEL);
println!("Setting default logging level to \"{}\", override with env var {}.",
default_log_level, ENV_RUST_LOG);
env::set_var(ENV_RUST_LOG, default_log_level);
}
env_logger::init();
}
pub fn init_dotenv() {
match dotenv::dotenv() {
Ok(_) => println!("dotenv configs initialized"),
Err(e) => println!("Could not initialize dotenv: {:?}", e),
}
}
pub fn init_all_with_default_logging(default_if_absent: Option<&str>) {
init_dotenv();
init_env_logger(default_if_absent)
}