#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum AppMode {
#[default]
Development,
Production,
}
impl AppMode {
pub fn overlay_filename(&self) -> &'static str {
match self {
AppMode::Development => "appsettings.Development.json",
AppMode::Production => "appsettings.Production.json",
}
}
pub fn from_env() -> Self {
Self::from_env_var("APP_ENV")
}
pub fn from_env_var(var: &str) -> Self {
match std::env::var(var) {
Ok(raw) => match raw.trim().to_lowercase().as_str() {
"production" | "prod" => AppMode::Production,
"development" | "dev" => AppMode::Development,
_ => {
eprintln!(
"[AppMode] Invalid {}='{}'; expected Production/Development. Falling back to Development.",
var, raw
);
AppMode::Development
}
},
Err(_) => AppMode::Development,
}
}
}