flamethrower 0.1.1

Deterministic cognition ledger using power_house (and optional pent_house).
Documentation
mod config;
mod http;

use std::path::Path;
use std::sync::{Arc, Mutex};

use flamethrower::*;

fn main() {
    // License banner in commercial mode
    #[cfg(feature = "commercial")]
    {
        if let Err(e) = commercial_banner() {
            eprintln!("{}", e);
            std::process::exit(2);
        }
    }

    let cfg = config::Config::from_env();
    let ledger = if Path::new(&cfg.ledger_path).exists() {
        Ledger::load_from(&cfg.ledger_path).unwrap_or_else(|_| Ledger::new())
    } else {
        Ledger::new()
    };

    log_json(
        "startup",
        &format!("port={}, ledger={}", cfg.port, cfg.ledger_path),
    );

    let srv = http::Server::bind(
        &format!("0.0.0.0:{}", cfg.port),
        Arc::new(Mutex::new(ledger)),
    )
    .expect("bind");
    if let Err(e) = srv.run() {
        eprintln!("server error: {}", e);
    }
}