chiark / gitweb /
otter cli: Provide list-pieces
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 26 Mar 2021 19:03:35 +0000 (19:03 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 26 Mar 2021 19:03:52 +0000 (19:03 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs

index a161634ba2bea97bb023b0e87f2deaf731171698..d21aa85980c54dc56571cdc3b3002545c9c639cb 100644 (file)
@@ -1264,3 +1264,41 @@ mod library_add {
     call,
   )}
 }
+
+//---------- list-pieces ----------
+
+mod list_pieces {
+  use super::*;
+
+  #[derive(Default,Debug)]
+  struct Args {
+    table_name: String,
+  }
+
+  fn subargs(sa: &mut Args) -> ArgumentParser {
+    use argparse::*;
+    let mut ap = ArgumentParser::new();
+    ap.refer(&mut sa.table_name).required()
+      .add_argument("TABLE-NAME",Store,"table name");
+    ap
+  }
+
+  #[throws(AE)]
+  fn call(_sc: &Subcommand, ma: MainOpts, args: Vec<String>) {
+    let args = parse_args::<Args,_>(args, &subargs, &ok_id, None);
+    let mut chan = access_game(&ma, &args.table_name)?;
+    let (pieces, pcaliases) = chan.list_pieces()?;
+    for p in pieces {
+      println!("{:?}", p);
+    }
+    for a in pcaliases {
+      println!("{:?}", a);
+    }
+  }
+
+  inventory::submit!{Subcommand(
+    "list-pieces",
+    "List pieces in the game",
+    call,
+  )}
+}