abridged/src/config.rs

41 lines
883 B
Rust
Raw Normal View History

2023-05-24 04:23:36 +00:00
use std::collections::HashMap;
use serde::Deserialize;
2023-05-24 04:23:36 +00:00
use crate::supervisor::Task;
#[derive(Debug, Deserialize)]
#[serde(tag="platform")]
2023-06-11 02:35:48 +00:00
#[serde(rename_all="kebab-case")]
2023-05-24 04:23:36 +00:00
pub enum Node {
#[cfg(feature="irc")]
Irc(crate::bridge_irc::IrcTask),
2023-06-11 02:35:48 +00:00
#[cfg(feature="irc-sp")]
IrcSp(crate::bridge_irc_sp::IrcSpTask),
2023-05-24 04:23:36 +00:00
#[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),
2023-06-11 02:35:48 +00:00
#[cfg(feature="irc-sp")]
Node::IrcSp(t) => Box::new(t),
2023-05-24 04:23:36 +00:00
#[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>,
}