public-appservice 0.2.2

An appservice to make Matrix spaces publicly accessible.
Documentation
use config::Config;
use public_appservice::*;
use server::Server;

use tracing::info;

use crate::AppState;

use anyhow::Context;

use log::{setup_metrics, setup_sentry, setup_tracing};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let args = Args::build();
    let config = Config::new(&args.config)?;

    let _sentry_guard = setup_sentry(&config);
    let _logging_guard = setup_tracing(&config)?;
    setup_metrics(&config)?;

    let state = AppState::new(config.clone())
        .await
        .context("Failed to initialize application state")?;

    info!("Starting Commune public appservice...");

    Server::new(state)
        .run()
        .await
        .context("Server encountered an error")?;

    Ok(())
}