chiark / gitweb /
wip join-game etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 Nov 2020 18:45:43 +0000 (18:45 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 Nov 2020 18:45:43 +0000 (18:45 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs
src/spec.rs

index f165f9c98a1d18cb14c9c2fbb3d038ecb0c46724..de765934befa58de4242b8287cb083ad6df8a0f0 100644 (file)
@@ -148,12 +148,20 @@ fn parse_args<T:Default,U>(
 pub fn ok_id<T,E>(t: T) -> Result<T,E> { Ok(t) }
 
 fn main() {
+  #[derive(Debug)]
+  struct RawAccess(Box<dyn PlayerAccessSpec>);
+  impl Clone for RawAccess {
+    fn clone(&self) -> Self {
+      Self(serde_json::from_str(serde_json::to_string(&self.0)))
+    }
+  }
+
   #[derive(Default,Debug)]
   struct RawMainArgs {
     account: Option<AccountName>,
     gaccount: Option<AccountName>,
     socket_path: Option<String>,
-    access: Option<Box<dyn PlayerAccessSpec>>,
+    access: Option<RawAccess>,
     verbose: i32,
     config_filename: Option<String>,
     subcommand: String,
@@ -175,7 +183,7 @@ fn main() {
     account.metavar("ACCOUNT").add_option(&["--account"],
                      StoreOption,
                      "use account ACCOUNT (default: unix:<current user>:)");
-    let urloso : Option<Box<dyn PlayerAccessSpec>> = Some(Box::new(UrlOnStdout));
+    let urloso = Some(RawAccess(Box::new(UrlOnStdout)));
     let mut access = ap.refer(&mut rma.access);
     access.add_option(&["--url-on-stdout"],
                       StoreConst(urloso),
@@ -197,7 +205,7 @@ fn main() {
        "increase verbosity (default is short progress messages)");
     access.metavar("TOKEN").add_option(
       &["--fixed-token"],
-      MapStore(|s| Box::new(FixedToken { token: RawToken (s.to_string()) })),
+      MapStore(|s| Ok(Some(RawAccess(Box::new(FixedToken { token: RawToken (s.to_string()) }))))),
       "use fixed game access token TOKEN (for administrators only)r"
     );
     ap
index 554f6e964162f22ea50be8625010dfdcd471e6ac..212be8d910083b010e9bbab67e1d84c668be43f8 100644 (file)
@@ -330,7 +330,6 @@ pub mod implementation {
       let inner = Html::from_txt(&format!("{:?}", self));
       Html(format!("<code>{}</code>", inner.0))
     }
-    fn clone_box(&self) 
   }
 
   #[typetag::serde]