2022-02-21 17:46:23 +01:00
|
|
|
#![doc = include_str!("../README.md")]
|
2022-02-12 12:25:05 +01:00
|
|
|
#![warn(
|
|
|
|
clippy::all,
|
|
|
|
missing_debug_implementations,
|
|
|
|
rust_2018_idioms,
|
|
|
|
rustdoc::broken_intra_doc_links
|
|
|
|
)]
|
|
|
|
#![deny(missing_docs)]
|
|
|
|
|
2022-02-12 15:58:56 +01:00
|
|
|
use color_eyre::Result;
|
|
|
|
use rocket::tokio::{self, select};
|
2022-02-18 23:18:50 +01:00
|
|
|
|
2022-03-15 09:23:01 +01:00
|
|
|
/// Starts the main maps refresh task and sets up and launches Rocket.
|
2022-02-12 15:58:56 +01:00
|
|
|
#[rocket::main]
|
|
|
|
async fn main() -> Result<()> {
|
|
|
|
color_eyre::install()?;
|
|
|
|
|
2022-03-15 09:23:01 +01:00
|
|
|
let (rocket, maps_refresher) = sinoptik::setup();
|
|
|
|
let rocket = rocket.ignite().await?;
|
2022-02-12 15:58:56 +01:00
|
|
|
let shutdown = rocket.shutdown();
|
2022-03-15 09:23:01 +01:00
|
|
|
let maps_refresher = tokio::spawn(maps_refresher);
|
2022-02-12 15:58:56 +01:00
|
|
|
|
|
|
|
select! {
|
|
|
|
result = rocket.launch() => {
|
2022-05-10 14:55:57 +02:00
|
|
|
result.map(|_| ())?
|
2022-02-12 15:58:56 +01:00
|
|
|
}
|
2022-03-15 09:23:01 +01:00
|
|
|
result = maps_refresher => {
|
2022-02-12 15:58:56 +01:00
|
|
|
shutdown.notify();
|
|
|
|
result?
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Ok(())
|
2022-02-12 12:25:05 +01:00
|
|
|
}
|