From c7f40f4c4d3cce2411a3d3090b4655fa0146845c Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 26 Dec 2020 12:26:53 +0000 Subject: [PATCH] runs otter to create table Signed-off-by: Ian Jackson --- wdriver.rs | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/wdriver.rs b/wdriver.rs index 07b324ca..bdb514bc 100644 --- a/wdriver.rs +++ b/wdriver.rs @@ -110,11 +110,13 @@ impl DirSubst { let build = &ds.start_dir; let target = format!("{}/target", &ds.start_dir); + let specs = format!("{}/specs" , &ds.src ); let map : HashMap<_,_> = [ ("", "@"), ("src" , &ds.src), ("build" , build), ("target", &target), + ("specs", &specs), ].iter().map(|(k,v)| (k.to_owned(), *v)).collect(); let re = Regex::new(r"@(\w+)@").expect("bad re!"); @@ -135,6 +137,16 @@ impl DirSubst { } inner(self, s.as_ref())? } + + #[throws(AE)] + fn ss(&self, s: &str) -> Vec { + self.subst(s)? + .trim() + .split(' ') + .filter(|s| !s.is_empty()) + .map(str::to_string) + .collect() + } } mod cleanup_notify { @@ -458,8 +470,37 @@ _ = "error" # rocket .context(server_exe).context("game server")?; } +impl DirSubst { + #[throws(AE)] + fn otter>(&self, args: &[S]) { + let ds = self; + let exe = ds.subst("@target@/debug/otter")?; + (||{ + let mut cmd = Command::new(&exe); + cmd + .args(&["--config", CONFIG]) + .args(&*args); + let st = cmd + .spawn().context("spawn")? + .wait().context("wait")?; + if !st.success() { + throw!(anyhow!("wait status {}", &st)); + } + Ok::<_,AE>(()) + })() + .context(exe) + .context("run otter client")?; + } +} + #[throws(AE)] -pub fn prepare_game(_ds: &DirSubst) { +pub fn prepare_game(ds: &DirSubst) { + ds.otter(&ds.ss( + "--account server: \ + reset \ + --reset-table @specs@/test.table.toml \ + server::dummy @specs@/demo.game.toml \ + ")?).context("reset table")?; } #[throws(AE)] -- 2.30.2