A PLC Mirror written in Rust
at main 1.1 kB view raw
1use dropshot::{ConfigDropshot, ServerBuilder}; 2use std::env::var; 3 4const DEFAULT_BIND: &str = "127.0.0.1:8080"; 5 6#[tokio::main] 7async fn main() -> eyre::Result<()> { 8 let log = plc_mirror::create_logger()?; 9 let api = plc_mirror::create_api()?; 10 11 // make the log global and bridge to the log crate (for any other crates that use it) 12 let _scope = slog_scope::set_global_logger(log.clone()); 13 slog_stdlog::init()?; 14 15 let pool = plc_mirror::connect_db().await?; 16 17 let start_after = plc_mirror::get_start_after(&pool).await?; 18 19 tokio::spawn(plc_mirror::import::importer( 20 log.clone(), 21 pool.clone(), 22 start_after, 23 )); 24 25 let bind_address = var("PLC_BIND_ADDR") 26 .unwrap_or(DEFAULT_BIND.to_string()) 27 .parse()?; 28 29 let context = plc_mirror::ApiContext { pool }; 30 31 let server = ServerBuilder::new(api, context, log) 32 .config(ConfigDropshot { 33 bind_address, 34 ..Default::default() 35 }) 36 .start()?; 37 38 server.await.map_err(|e| eyre::Report::msg(e)) 39}