use console::style;
use serde::{Deserialize, Serialize};
use sword_core::{Config, ConfigItem, ConfigRegistrar, State, inventory_submit};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ApplicationConfig {
pub name: Option<String>,
pub environment: Option<String>,
#[serde(rename = "graceful-shutdown")]
pub graceful_shutdown: bool,
}
impl ApplicationConfig {
pub fn display(&self) {
println!();
if let Some(name) = &self.name {
println!("{}", style(format!("{} Configuration:", name)).bold());
} else {
println!("{}", style("Application Configuration:").bold());
}
if self.graceful_shutdown {
println!(" ↳ Graceful Shutdown: enabled");
} else {
println!(" ↳ {}", style("Graceful Shutdown: disabled").red());
}
if let Some(env) = &self.environment {
println!(" ↳ Environment: {}", env);
}
}
}
impl ConfigItem for ApplicationConfig {
fn toml_key() -> &'static str {
"application"
}
fn register(state: &State, config: &Config) {
state.insert(config.get_or_default::<Self>());
}
}
inventory_submit! {[
ConfigRegistrar::new(|state, config| {
ApplicationConfig::register(state, config)
})
]}