chiark / gitweb /
otter(1): Generalise alter-game-json ad-hoc subcommand (2)
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 19 May 2021 21:24:09 +0000 (22:24 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 19 May 2021 21:31:59 +0000 (22:31 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs

index 7bc4128b805c672d0eb5cc87d6919b0cc16e7e35..27860d1df4152a378be0294a0bf93d904830faba 100644 (file)
@@ -1398,18 +1398,22 @@ mod alter_game_adhoc {
     let args = parse_args::<Args,_>(args, subargs, &ok_id, None);
     let mut chan = access_game(&ma, &args.table_name)?;
 
-    let insns = args.insns.iter().enumerate().map(|(i,s)|{
-      serde_json::from_str(&s)
+    let insns = args.insns.iter().enumerate().map(|(i,s)| match fmtname {
+      "json" => serde_json::from_str(&s).map_err(AE::from),
+      _ => panic!(),
+    }
         .with_context(|| s.clone())
         .with_context(|| format!("parse insn (#{})", i))
-    }).collect::<Result<Vec<MgmtGameInstruction>,AE>>()?;
+    ).collect::<Result<Vec<MgmtGameInstruction>,AE>>()?;
 
     let resps = chan.alter_game(insns,None)?;
 
     for resp in resps {
-      println!("{}",
-               serde_json::to_string(&resp)
-               .context("re-format response")?);
+      println!("{}", match fmtname {
+        "json" => serde_json::to_string(&resp).map_err(AE::from),
+        _ => panic!(),
+      }
+          .context("re-format response")?);
     }
     Ok(())
   }