From 989357ff8d95bbcf57b0c352845e7a05ab077d9f Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 15 Nov 2020 18:08:26 +0000 Subject: [PATCH] before clone for PlayerAccessSpec via serde Signed-off-by: Ian Jackson --- src/bin/otter.rs | 15 +++++++++++++-- src/spec.rs | 5 +++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 25409f52..f165f9c9 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -72,7 +72,7 @@ struct MainOpts { timezone: Option, // xxx default to UrlOnStdout // xxx options for others - access: Option>, + access: Box, socket_path: String, verbose: i32, } @@ -153,6 +153,7 @@ fn main() { account: Option, gaccount: Option, socket_path: Option, + access: Option>, verbose: i32, config_filename: Option, subcommand: String, @@ -174,6 +175,11 @@ fn main() { account.metavar("ACCOUNT").add_option(&["--account"], StoreOption, "use account ACCOUNT (default: unix::)"); + let urloso : Option> = Some(Box::new(UrlOnStdout)); + let mut access = ap.refer(&mut rma.access); + access.add_option(&["--url-on-stdout"], + StoreConst(urloso), + "show game access url by printing to stdout"); let mut gaccount = ap.refer(&mut rma.gaccount); gaccount.metavar("GAME-ACCOUNT").add_option(&["--game-name-account"], StoreOption, @@ -189,9 +195,14 @@ fn main() { "set verbosity to error messages only"); verbose.add_option(&["-v","--verbose"], IncrBy(1), "increase verbosity (default is short progress messages)"); + access.metavar("TOKEN").add_option( + &["--fixed-token"], + MapStore(|s| Box::new(FixedToken { token: RawToken (s.to_string()) })), + "use fixed game access token TOKEN (for administrators only)r" + ); ap }, &|RawMainArgs { - account, gaccount, socket_path, verbose, config_filename, + account, gaccount, access, socket_path, verbose, config_filename, subcommand, subargs, }|{ let account : AccountName = account.map(Ok::<_,APE>).unwrap_or_else(||{ diff --git a/src/spec.rs b/src/spec.rs index 8b40bdcd..554f6e96 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -112,10 +112,10 @@ pub enum TablePermission { pub struct PlayerAccessUnset; #[derive(Debug,Serialize,Deserialize)] -struct FixedToken { token: RawToken } +pub struct FixedToken { pub token: RawToken } #[derive(Debug,Serialize,Deserialize)] -struct UrlOnStdout; +pub struct UrlOnStdout; //#[derive(Debug,Serialize,Deserialize)] //struct TokenByEmail { email: String }; @@ -330,6 +330,7 @@ pub mod implementation { let inner = Html::from_txt(&format!("{:?}", self)); Html(format!("{}", inner.0)) } + fn clone_box(&self) } #[typetag::serde] -- 2.30.2