abridged/src/config.rs

37 lines
752 B
Rust

use std::collections::HashMap;
use serde::Deserialize;
use crate::supervisor::Task;
#[derive(Debug, Deserialize)]
#[serde(tag="platform")]
#[serde(rename_all="snake_case")]
pub enum Node {
#[cfg(feature="irc")]
Irc(crate::bridge_irc::IrcTask),
#[cfg(feature="matrix")]
Matrix(crate::bridge_matrix::MatrixTask),
#[cfg(feature="discord")]
Discord(crate::bridge_discord::DiscordTask),
}
impl Node {
pub fn into_task(self) -> Box<dyn Task> {
match self {
#[cfg(feature="irc")]
Node::Irc(t) => Box::new(t),
#[cfg(feature="matrix")]
Node::Matrix(t) => Box::new(t),
#[cfg(feature="discord")]
Node::Discord(t) => Box::new(t),
}
}
}
#[derive(Debug, Deserialize)]
pub struct Config {
pub nodes: HashMap<String, Node>,
}