refactor(server): propagate config-load errors via anyhow

This commit is contained in:
Serkyo 2026-07-08 15:14:45 +02:00
parent e940cf560e
commit 7ce3bb8577
5 changed files with 12 additions and 8 deletions

5
Cargo.lock generated
View file

@ -67,9 +67,9 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
[[package]]
name = "anyhow"
version = "1.0.102"
version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
[[package]]
name = "arrayref"
@ -1776,6 +1776,7 @@ dependencies = [
name = "server"
version = "0.1.0"
dependencies = [
"anyhow",
"bevy_ecs",
"crossbeam-channel",
"glam 0.33.2",

View file

@ -11,6 +11,7 @@ version = "0.1.0"
# Dependencies used by more than one crate are pinned once here so a version can never drift between crates.
[workspace.dependencies]
anyhow = "1.0.103"
glam = { version = "0.33", features = ["serde"] }
bytemuck = { version = "1.21", features = ["derive"] }
tracing = "0.1.44"

View file

@ -9,7 +9,7 @@ authors.workspace = true
workspace = true
[dependencies]
anyhow = "1.0.102"
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
winit = "0.30.13"

View file

@ -9,6 +9,7 @@ authors.workspace = true
workspace = true
[dependencies]
anyhow = { workspace = true }
bevy_ecs = "0.19"
crossbeam-channel = "0.5.16"
glam = { workspace = true }

View file

@ -13,6 +13,7 @@ pub mod world_server;
use std::collections::HashSet;
use std::fs;
use anyhow::Context;
use bevy_ecs::prelude::{Query, ResMut, Schedule, With, World};
use glam::Vec3;
use shared::generator::{VoxelGenerator, WorldGenConfig};
@ -43,7 +44,7 @@ fn stream_chunks(
);
}
fn main() {
fn main() -> anyhow::Result<()> {
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::try_from_default_env()
@ -53,13 +54,11 @@ fn main() {
info!("Starting Synvael server");
#[expect(clippy::expect_used)]
let config_str = fs::read_to_string("assets/data/worldgen/default.json")
.expect("Failed to read worldgen config");
.context("reading worldgen config assets/data/worldgen/default.json")?;
#[expect(clippy::expect_used)]
let worldgen_config: WorldGenConfig =
serde_json::from_str(&config_str).expect("Failed to parse worldgen config");
serde_json::from_str(&config_str).context("parsing worldgen config as JSON")?;
info!("Successfully loaded world configuration");
debug!("Base height: {}", worldgen_config.base_height);
@ -115,4 +114,6 @@ fn main() {
position.0.chunk.x += 1;
}
}
Ok(())
}