/*
* Part of epicinium_server
* developed by A Bunch of Hacks.
*
* Copyright (c) 2018-2021 A Bunch of Hacks
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*
* [authors:]
* Sander in 't Veld (sander@abunchofhacks.coop)
*/
use crate::common::log;
use std::path::Path;
use serde_derive::Deserialize;
use anyhow::Context;
#[derive(Clone, Deserialize, Debug, Default)]
#[serde(rename_all = "kebab-case")]
pub struct Settings
{
#[serde(default)]
pub logname: Option,
#[serde(default)]
pub loglevel: Option,
#[serde(default)]
pub server: Option,
#[serde(default)]
pub port: Option,
#[serde(default)]
pub login_server: Option,
#[serde(default)]
pub allow_discord_login: Option,
#[serde(default)]
pub steam_web_key: Option,
#[serde(default)]
pub slackname: Option,
#[serde(default)]
pub slackurl: Option,
#[serde(default)]
pub discordurl: Option,
}
impl Settings
{
pub fn load(filename: &str) -> Result
{
let filename = Path::new(filename);
let raw = std::fs::read_to_string(filename)?;
let settings = serde_json::from_str(&raw).with_context(|| {
format!("parsing settings from '{}'", filename.display())
})?;
Ok(settings)
}
}