Change config format from yaml to toml

This commit is contained in:
2025-11-16 10:33:14 +01:00
parent 39c7208b44
commit 50afa9f7fb
5 changed files with 111 additions and 66 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,5 @@
target/ target/
config.yaml config.toml
db.sqlite3 db.sqlite3
.vscode/ .vscode/

155
Cargo.lock generated
View File

@@ -58,7 +58,7 @@ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -208,11 +208,11 @@ dependencies = [
"rrule", "rrule",
"rust-i18n", "rust-i18n",
"serde", "serde",
"serde_yaml",
"strum", "strum",
"teloxide", "teloxide",
"thiserror", "thiserror",
"tokio", "tokio",
"toml 0.9.8",
] ]
[[package]] [[package]]
@@ -367,7 +367,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"strsim 0.11.1", "strsim 0.11.1",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -389,7 +389,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [ dependencies = [
"darling_core 0.20.10", "darling_core 0.20.10",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -411,7 +411,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustc_version", "rustc_version",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -436,7 +436,7 @@ dependencies = [
"dsl_auto_type", "dsl_auto_type",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -456,7 +456,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25"
dependencies = [ dependencies = [
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -479,7 +479,7 @@ dependencies = [
"heck 0.5.0", "heck 0.5.0",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -665,7 +665,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -785,9 +785,9 @@ dependencies = [
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.14.5" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
[[package]] [[package]]
name = "heck" name = "heck"
@@ -1081,9 +1081,9 @@ dependencies = [
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.5.0" version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"hashbrown", "hashbrown",
@@ -1331,7 +1331,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -1428,7 +1428,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -1714,7 +1714,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"serde_yml", "serde_yml",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -1884,22 +1884,32 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.210" version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.210" version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -1923,6 +1933,15 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "serde_spanned"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
dependencies = [
"serde_core",
]
[[package]] [[package]]
name = "serde_urlencoded" name = "serde_urlencoded"
version = "0.7.1" version = "0.7.1"
@@ -1957,19 +1976,6 @@ dependencies = [
"syn 1.0.109", "syn 1.0.109",
] ]
[[package]]
name = "serde_yaml"
version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"itoa",
"ryu",
"serde",
"unsafe-libyaml",
]
[[package]] [[package]]
name = "serde_yml" name = "serde_yml"
version = "0.0.11" version = "0.0.11"
@@ -2082,7 +2088,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustversion", "rustversion",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -2104,9 +2110,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.77" version = "2.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -2290,7 +2296,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -2364,7 +2370,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
] ]
[[package]] [[package]]
@@ -2419,8 +2425,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
dependencies = [ dependencies = [
"serde", "serde",
"serde_spanned", "serde_spanned 0.6.8",
"toml_datetime", "toml_datetime 0.6.8",
"toml_edit 0.19.15", "toml_edit 0.19.15",
] ]
@@ -2431,11 +2437,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
dependencies = [ dependencies = [
"serde", "serde",
"serde_spanned", "serde_spanned 0.6.8",
"toml_datetime", "toml_datetime 0.6.8",
"toml_edit 0.22.22", "toml_edit 0.22.22",
] ]
[[package]]
name = "toml"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
dependencies = [
"indexmap",
"serde_core",
"serde_spanned 1.0.3",
"toml_datetime 0.7.3",
"toml_parser",
"toml_writer",
"winnow 0.7.13",
]
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "0.6.8" version = "0.6.8"
@@ -2445,6 +2466,15 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "toml_datetime"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
dependencies = [
"serde_core",
]
[[package]] [[package]]
name = "toml_edit" name = "toml_edit"
version = "0.19.15" version = "0.19.15"
@@ -2453,8 +2483,8 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"serde", "serde",
"serde_spanned", "serde_spanned 0.6.8",
"toml_datetime", "toml_datetime 0.6.8",
"winnow 0.5.40", "winnow 0.5.40",
] ]
@@ -2466,11 +2496,26 @@ checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"serde", "serde",
"serde_spanned", "serde_spanned 0.6.8",
"toml_datetime", "toml_datetime 0.6.8",
"winnow 0.6.20", "winnow 0.6.20",
] ]
[[package]]
name = "toml_parser"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
dependencies = [
"winnow 0.7.13",
]
[[package]]
name = "toml_writer"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
[[package]] [[package]]
name = "tower-service" name = "tower-service"
version = "0.3.3" version = "0.3.3"
@@ -2543,12 +2588,6 @@ dependencies = [
"tinyvec", "tinyvec",
] ]
[[package]]
name = "unsafe-libyaml"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
[[package]] [[package]]
name = "untrusted" name = "untrusted"
version = "0.9.0" version = "0.9.0"
@@ -2641,7 +2680,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@@ -2675,7 +2714,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.77", "syn 2.0.87",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@@ -2923,6 +2962,12 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "winnow"
version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
[[package]] [[package]]
name = "winreg" name = "winreg"
version = "0.50.0" version = "0.50.0"

View File

@@ -24,11 +24,11 @@ reqwest = "0.12.4"
rrule = "0.13.0" rrule = "0.13.0"
rust-i18n = "3.0.1" rust-i18n = "3.0.1"
serde = { version = "1.0.145", features = ["derive"] } serde = { version = "1.0.145", features = ["derive"] }
serde_yaml = "0.9.13"
strum = { version = "0.26.1", features = ["derive"] } strum = { version = "0.26.1", features = ["derive"] }
teloxide = { version = "0.13.0", features = ["macros", "throttle"] } teloxide = { version = "0.13.0", features = ["macros", "throttle"] }
thiserror = "1.0.56" thiserror = "1.0.56"
tokio = { version = "1.21.2", features = ["macros"] } tokio = { version = "1.21.2", features = ["macros"] }
toml = "0.9.8"
[package.metadata.i18n] [package.metadata.i18n]
available-locales = ["en", "de"] available-locales = ["en", "de"]

View File

@@ -2,8 +2,8 @@ use thiserror::Error;
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum ConfigLoadError { pub enum ConfigLoadError {
#[error("Failed to open config file: {0}")]
OpenFailed(#[source] std::io::Error),
#[error("Failed to read config file: {0}")] #[error("Failed to read config file: {0}")]
ReadError(#[source] serde_yaml::Error), ReadError(#[source] std::io::Error),
#[error("Failed to parse config file: {0}")]
ParseError(#[source] toml::de::Error),
} }

View File

@@ -6,7 +6,8 @@ mod migrating_send;
mod schema; mod schema;
use std::env::args; use std::env::args;
use std::{env, fs::File, io::BufReader, sync::Arc}; use std::fs::read_to_string;
use std::{env, sync::Arc};
use anyhow::Result; use anyhow::Result;
use async_mutex::Mutex; use async_mutex::Mutex;
@@ -48,7 +49,7 @@ pub struct Config {
impl Config { impl Config {
fn load() -> Result<Self, ConfigLoadError> { fn load() -> Result<Self, ConfigLoadError> {
let env_var_name = "CALENDAR_BOT_CONFIG_FILE"; let env_var_name = "CALENDAR_BOT_CONFIG_FILE";
let default_filename = "./config.yaml"; let default_filename = "./config.toml";
let path = env::var(env_var_name).unwrap_or_else(|_| { let path = env::var(env_var_name).unwrap_or_else(|_| {
warn!( warn!(
"Cannot read env var '{}', assuming '{}'", "Cannot read env var '{}', assuming '{}'",
@@ -57,9 +58,8 @@ impl Config {
default_filename.to_owned() default_filename.to_owned()
}); });
info!("Reading configuration from {}", path); info!("Reading configuration from {}", path);
let file = File::open(path).map_err(ConfigLoadError::OpenFailed)?; let s = read_to_string(path).map_err(ConfigLoadError::ReadError)?;
let reader = BufReader::new(file); toml::from_str(&s).map_err(ConfigLoadError::ParseError)
serde_yaml::from_reader(reader).map_err(ConfigLoadError::ReadError)
} }
} }