kpal 0.2.2

An extensible and RESTful control system for physical computing
Documentation
use std::process::exit;
use std::sync::Arc;

use env_logger;
use log;
use structopt::StructOpt;

use kpal::init::{init, Cli, Init};
use kpal::web::routes;

fn main() {
    env_logger::init();
    let args = Cli::from_args();

    let Init {
        libraries,
        transmitters,
    } = match init(&args) {
        Ok(init) => init,
        Err(e) => {
            log::error!("{}", e);
            exit(1);
        }
    };

    let transmitters = Arc::new(transmitters);

    log::info!("Launching the server at {}...", &args.server_addr);
    rouille::start_server(&args.server_addr, move |request| {
        let transmitters = transmitters.clone();

        routes(&request, &libraries, transmitters)
    });
}