use once_cell::sync::OnceCell;
use structopt::StructOpt;
pub static CONFIG: OnceCell<Config> = OnceCell::new();
#[derive(Debug, StructOpt)]
pub struct Config {
#[structopt(long, short = "a", default_value = "::", env = "SERVER_HOST")]
pub host: String,
#[structopt(long, short = "p", default_value = "80", env = "SERVER_PORT")]
pub port: u16,
#[structopt(
long,
short = "n",
default_value = "8",
env = "SERVER_THREADS_MULTIPLIER"
)]
pub threads_multiplier: usize,
#[structopt(long, short = "d", default_value = "./public", env = "SERVER_ROOT")]
pub root: String,
#[structopt(
long,
default_value = "./public/50x.html",
env = "SERVER_ERROR_PAGE_50X"
)]
pub page50x: String,
#[structopt(
long,
default_value = "./public/404.html",
env = "SERVER_ERROR_PAGE_404"
)]
pub page404: String,
#[structopt(long, short = "x", default_value = "gzip", env = "SERVER_COMPRESSION")]
pub compression: String,
#[structopt(long, short = "g", default_value = "error", env = "SERVER_LOG_LEVEL")]
pub log_level: String,
#[structopt(
long,
short = "c",
default_value = "",
env = "SERVER_CORS_ALLOW_ORIGINS"
)]
pub cors_allow_origins: String,
#[structopt(long, short = "t", env = "SERVER_HTTP2_TLS")]
pub http2: bool,
#[structopt(long, default_value = "", env = "SERVER_HTTP2_TLS_CERT")]
pub http2_tls_cert: String,
#[structopt(long, default_value = "", env = "SERVER_HTTP2_TLS_KEY")]
pub http2_tls_key: String,
}
impl Config {
pub fn global() -> &'static Config {
CONFIG.get().expect("Config is not initialized")
}
}