miasma 0.2.1

Trap malicious AI web scrapers in an endless pit of poisoned training data.
Documentation
mod art;
mod version_check;

use std::sync::LazyLock;

use miasma::{Miasma, MiasmaConfig, MiasmaError};

static CONFIG: LazyLock<MiasmaConfig> = LazyLock::new(MiasmaConfig::new);

fn main() -> Result<(), MiasmaError> {
    // Print banner as long as the user isn't just checking the version
    if !std::env::args().any(|arg| arg == "-V" || arg == "--version") {
        art::print_miasma_ascii_art();
    }

    tokio::runtime::Builder::new_multi_thread()
        .enable_all()
        .thread_name("miasma-thread")
        .build()
        .unwrap()
        .block_on(async {
            tokio::spawn(version_check::check_for_new_version());
            let shutdown_signal = async {
                tokio::signal::ctrl_c()
                    .await
                    .expect("Failed to register shutdown listener");
            };

            let miasma = Miasma::new(&CONFIG).await?;

            CONFIG.print_config_info();

            miasma.run(shutdown_signal).await
        })
}