diff options
Diffstat (limited to 'server/src/main.rs')
| -rw-r--r-- | server/src/main.rs | 37 | 
1 files changed, 31 insertions, 6 deletions
| diff --git a/server/src/main.rs b/server/src/main.rs index 7c072319..db667779 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -15,10 +15,10 @@      along with this program.  If not, see <https://www.gnu.org/licenses/>.  */ -use anyhow::Result; +use anyhow::{anyhow, Result};  use futures_util::{SinkExt, StreamExt}; -use log::{debug, info, warn}; -use std::{env::args, process::exit, sync::Arc, time::Duration}; +use log::{debug, info, warn, LevelFilter}; +use std::{env::args, path::PathBuf, process::exit, str::FromStr, sync::Arc, time::Duration};  use tokio::{      net::TcpListener,      spawn, @@ -27,13 +27,16 @@ use tokio::{  };  use tokio_tungstenite::tungstenite::Message;  use undercooked::{ +    data::DATA_DIR,      protocol::{PacketC, PacketS, PlayerID},      state::State,  }; -#[tokio::main] -async fn main() -> Result<()> { -    env_logger::init_from_env("LOG"); +fn main() -> Result<()> { +    env_logger::builder() +        .filter_level(LevelFilter::Info) +        .parse_env("LOG") +        .init();      if let Some(arg) = args().nth(1) {          match arg.as_str() { @@ -43,6 +46,28 @@ async fn main() -> Result<()> {          exit(0);      } +    let data_dir = PathBuf::from_str( +        [ +            "/usr/local/share/undercooked/data", +            "/usr/share/undercooked/data", +            "./data", +        ] +        .into_iter() +        .find(|p| PathBuf::from_str(p).unwrap().join("index.yaml").exists()) +        .ok_or(anyhow!("no data dir detected"))?, +    ) +    .unwrap(); +    info!("Detected data dir to be {data_dir:?}"); +    *DATA_DIR.lock().unwrap() = Some(data_dir); + +    tokio::runtime::Builder::new_multi_thread() +        .enable_all() +        .build()? +        .block_on(run())?; +    Ok(()) +} + +async fn run() -> anyhow::Result<()> {      let ws_listener = TcpListener::bind("0.0.0.0:27032").await?;      info!("listening for websockets on {}", ws_listener.local_addr()?); | 
