ticker/libticker/src/config.rs

39 lines
1.0 KiB
Rust
Raw Permalink Normal View History

2019-10-26 01:14:49 +02:00
use std::fs::read_to_string;
2019-10-10 02:37:24 +02:00
use std::collections::BTreeMap;
use serde::{Serialize, Deserialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CalendarDefaults {
pub location: Option<String>,
pub url: Option<String>,
}
2019-10-10 02:37:24 +02:00
2020-10-26 19:48:17 +01:00
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2019-10-10 02:37:24 +02:00
pub struct CalendarOptions {
pub url: String,
2020-10-26 19:48:17 +01:00
pub color: String,
pub defaults: Option<CalendarDefaults>,
2019-10-10 02:37:24 +02:00
}
2020-10-26 19:48:17 +01:00
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2019-10-10 02:37:24 +02:00
pub struct Config {
pub db_url: String,
pub http_bind: String,
2019-10-10 02:37:24 +02:00
pub calendars: BTreeMap<String, CalendarOptions>,
2020-10-26 19:48:17 +01:00
pub weekdays: Vec<String>,
pub months: Vec<String>,
/// show how much into the future
pub upcoming_days: u32,
/// show events only if they started no more than this many days ago
pub passed_days: u32,
2019-10-10 02:37:24 +02:00
}
2019-10-26 01:14:49 +02:00
impl Config {
pub fn read_yaml_file(path: &str) -> Self {
let config_file = read_to_string(path)
.expect(path);
serde_yaml::from_str(&config_file)
.expect("config")
}
}