🚧 wip: machine-editable config
parent
c361ecd806
commit
5ebdbaa225
|
@ -19,14 +19,28 @@ use crate::{
|
|||
/// These are stored in the `data` directory and shouldn't be touched by
|
||||
/// humans. ptth_relay will re-write them while it's running.
|
||||
|
||||
mod machine_editable {
|
||||
pub mod machine_editable {
|
||||
use std::{
|
||||
path::Path,
|
||||
};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use super::file::Server;
|
||||
|
||||
#[derive (Deserialize, Serialize)]
|
||||
pub struct Config {
|
||||
pub servers: Option <Vec <Server>>,
|
||||
pub servers: Vec <Server>,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
pub async fn from_file (path: &Path) -> Result <Self, crate::ConfigError>
|
||||
{
|
||||
let config_s = tokio::fs::read_to_string (path).await?;
|
||||
let new_config: Config = toml::from_str (&config_s)?;
|
||||
|
||||
Ok (new_config)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,10 @@ mod routing;
|
|||
mod scraper_api;
|
||||
mod server_endpoint;
|
||||
|
||||
pub use config::Config;
|
||||
pub use config::{
|
||||
Config,
|
||||
machine_editable,
|
||||
};
|
||||
pub use errors::*;
|
||||
pub use relay_state::Relay;
|
||||
|
||||
|
@ -588,15 +591,20 @@ async fn reload_config (
|
|||
state: &Arc <Relay>,
|
||||
config_reload_path: &Path
|
||||
) -> Result <(), ConfigError> {
|
||||
// Reload human-editable config
|
||||
let new_config = Config::from_file (config_reload_path).await?;
|
||||
|
||||
// Reload machine-editable config, if possible
|
||||
let me_config = machine_editable::Config::from_file (Path::new ("data/ptth_relay_me_config.toml")).await.ok ();
|
||||
|
||||
let mut config = state.config.write ().await;
|
||||
|
||||
trace! ("Reloading config");
|
||||
if config.servers.len () != new_config.servers.len () {
|
||||
debug! ("Loaded {} server configs", config.servers.len ());
|
||||
debug! ("Loaded {} server configs", new_config.servers.len ());
|
||||
}
|
||||
if config.iso.enable_scraper_api != new_config.iso.enable_scraper_api {
|
||||
debug! ("enable_scraper_api: {}", config.iso.enable_scraper_api);
|
||||
debug! ("enable_scraper_api: {}", new_config.iso.enable_scraper_api);
|
||||
}
|
||||
|
||||
(*config) = new_config;
|
||||
|
|
Loading…
Reference in New Issue