chiark / gitweb /
common library args
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Sep 2020 12:55:48 +0000 (13:55 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Sep 2020 12:55:48 +0000 (13:55 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs

index 1c601f87da6412579b4b46bf775da502bcf01f51..109c4be62d21dc45cb6596f49b3b182dae8fa405 100644 (file)
@@ -580,29 +580,41 @@ mod reset_game {
 
 //---------- library-list ----------
 
-mod library_list {
-  use super::*;
+#[derive(Debug)]
+struct TableLibGlobArgs {
+  name: String,
+  pat: shapelib::ItemSpec,
+}
 
-  #[derive(Debug)]
-  struct Args {
-    name: String,
-    pat: shapelib::ItemSpec,
+impl Default for TableLibGlobArgs { fn default() -> Self { Self {
+  name: default(),
+  pat: shapelib::ItemSpec { lib: default(), item: default() },
+} } }
+
+impl TableLibGlobArgs {
+  fn add_arguments<'ap, 'tlg : 'ap>(
+    &'tlg mut self,
+    ap: &'_ mut ArgumentParser<'ap>
+  ) {
+    use argparse::*;
+    ap.refer(&mut self.name).required()
+      .add_argument("TABLE-NAME",Store,"table name");
+    ap.refer(&mut self.pat.lib).required()
+      .add_argument("LIB-NAME",Store,"library name");
+    ap.refer(&mut self.pat.item).required()
+      .add_argument("ITEM-GLOB-PATTERN",Store,"item glob pattern");
   }
+}
 
-  impl Default for Args { fn default() -> Args { Args {
-    name: default(),
-    pat: shapelib::ItemSpec { lib: default(), item: default() },
-  } } }
+mod library_list {
+  use super::*;
+
+  type Args = TableLibGlobArgs;
 
   fn subargs(sa: &mut Args) -> ArgumentParser {
     use argparse::*;
     let mut ap = ArgumentParser::new();
-    ap.refer(&mut sa.name).required()
-      .add_argument("TABLE-NAME",Store,"table name");
-    ap.refer(&mut sa.pat.lib).required()
-      .add_argument("LIB-NAME",Store,"library name");
-    ap.refer(&mut sa.pat.item).required()
-      .add_argument("ITEM-GLOB-PATTERN",Store,"item glob pattern");
+    sa.add_arguments(&mut ap);
     ap
   }
 
@@ -636,10 +648,8 @@ mod library_add {
 
   #[derive(Default,Debug)]
   struct Args {
+    tlg: TableLibGlobArgs,
     adjust_markers: Option<bool>,
-    name: String,
-    lib: String,
-    pat: String,
   }
 
   impl Args {
@@ -653,12 +663,7 @@ mod library_add {
       .add_option(&["--no-adjust-markers"],StoreConst(Some(false)),
                   "do not adjust the number of insertion markers, just fail")
       .add_option(&["--adjust-markers"],StoreConst(Some(true)),"");
-    ap.refer(&mut sa.name).required()
-      .add_argument("TABLE-NAME",Store,"table name");
-    ap.refer(&mut sa.lib).required()
-      .add_argument("LIB-NAME",Store,"library name");
-    ap.refer(&mut sa.pat).required()
-      .add_argument("ITEM-GLOB-PATTERN",Store,"item glob pattern");
+    sa.tlg.add_arguments(&mut ap);
     ap
   }
 
@@ -668,7 +673,7 @@ mod library_add {
     let args = parse_args::<Args,_>(args, &subargs, None, None);
     let mut chan = ConnForGame {
       conn: connect(&ma)?,
-      name: args.name.clone(),
+      name: args.tlg.name.clone(),
       how: MgmtGameUpdateMode::Online,
     };
     let markers = chan.get_pieces()?.into_iter().filter(
@@ -749,6 +754,9 @@ mod library_add {
     };
     dbg!(&placement);
 
+    let items = chan.list_items(&args.tlg.pat);
+    dbg!(&items);
+
     Ok(())
   }