From: Ian Jackson Date: Tue, 26 Jan 2021 23:17:26 +0000 (+0000) Subject: wdt: Provide game_spec_data X-Git-Tag: otter-0.4.0~672 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ab65a8b52d0f1f99fbe0b2a076460cbc448ba59d;p=otter.git wdt: Provide game_spec_data No caller yet. Signed-off-by: Ian Jackson --- diff --git a/Cargo.lock.example b/Cargo.lock.example index 44a3d31d..5d7d391e 100644 --- a/Cargo.lock.example +++ b/Cargo.lock.example @@ -1743,6 +1743,7 @@ dependencies = [ "structopt", "strum", "thirtyfour_sync", + "toml 0.5.8", "void", "x11rb", ] diff --git a/wdriver.rs b/wdriver.rs index b2370e34..69a6615d 100644 --- a/wdriver.rs +++ b/wdriver.rs @@ -643,6 +643,18 @@ impl DirSubst { pub fn game_spec_path(&self) -> String { self.subst("@specs@/demo.game.toml")? } + + #[throws(AE)] + pub fn game_spec_data(&self) -> otter::spec::GameSpec { + let path = self.game_spec_path()?; + (||{ + let data = fs::read(&path).context("read")?; + let data = toml::de::from_slice(&data).context("parse")?; + Ok::<_,AE>(data) + })() + .context(path) + .context("game spec")? + } } #[throws(AE)] diff --git a/wdriver/Cargo.toml b/wdriver/Cargo.toml index e0a2b8cb..1f2d3f8f 100644 --- a/wdriver/Cargo.toml +++ b/wdriver/Cargo.toml @@ -34,6 +34,7 @@ serde_json = "1" structopt = "0.3" strum = { version = "0.20", features = ['derive'] } thirtyfour_sync = "0.22" +toml = "0.5" void = "1" x11rb = "0.8"