41 lines
883 B
Rust
41 lines
883 B
Rust
use std::collections::HashMap;
|
|
|
|
use serde::Deserialize;
|
|
|
|
use crate::supervisor::Task;
|
|
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
#[serde(tag="platform")]
|
|
#[serde(rename_all="kebab-case")]
|
|
pub enum Node {
|
|
#[cfg(feature="irc")]
|
|
Irc(crate::bridge_irc::IrcTask),
|
|
#[cfg(feature="irc-sp")]
|
|
IrcSp(crate::bridge_irc_sp::IrcSpTask),
|
|
#[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="irc-sp")]
|
|
Node::IrcSp(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>,
|
|
}
|