chiark / gitweb /
specs: Plumb InstanceName through to TablePlayerSpec::account_glob
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Apr 2021 17:01:34 +0000 (18:01 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Apr 2021 17:01:34 +0000 (18:01 +0100)
This makes it possible for the meaning of a TablePlayerSpec to be
"local" relative to the instance name.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs
src/spec.rs

index 4471fb1a640cbd873086a11ba3a58b41c5c4a96e..2bfdfc6a403342a8d58556965e62bb3c96893e9e 100644 (file)
@@ -516,7 +516,8 @@ const PLAYER_DEFAULT_PERMS: &[TablePermission] = &[
 ];
 
 #[throws(AE)]
-fn setup_table(_ma: &MainOpts, spec: &TableSpec) -> Vec<MGI> {
+fn setup_table(_ma: &MainOpts, instance_name: &InstanceName, spec: &TableSpec)
+               -> Vec<MGI> {
   let TableSpec { players, player_perms, acl, links } = spec;
   let mut player_perms = player_perms.clone()
     .unwrap_or(PLAYER_DEFAULT_PERMS.iter().cloned().collect());
@@ -524,7 +525,7 @@ fn setup_table(_ma: &MainOpts, spec: &TableSpec) -> Vec<MGI> {
 
   let acl: RawAcl<_> =
     players.iter().map(|tps| AclEntry {
-      account_glob: tps.account_glob(),
+      account_glob: tps.account_glob(instance_name),
       allow: player_perms.clone(),
       deny: default(),
     })
@@ -663,8 +664,9 @@ mod reset_game {
 
   fn call(_sc: &Subcommand, ma: MainOpts, args: Vec<String>) ->Result<(),AE> {
     let args = parse_args::<Args,_>(args, &subargs, &ok_id, None);
+    let instance_name = ma.instance_name(&args.table_name);
     let mut chan = access_account(&ma)?.chan.for_game(
-      ma.instance_name(&args.table_name),
+      instance_name.clone(),
       MgmtGameUpdateMode::Bulk,
     );
     let GameSpec {
@@ -689,7 +691,7 @@ mod reset_game {
         Err(e)
       })?;
 
-      insns.extend(setup_table(&ma, &table_spec)?);
+      insns.extend(setup_table(&ma, &instance_name, &table_spec)?);
     }
 
     let (pcs, aliases) = chan.list_pieces()?;
index 2b14d782651915a650a3182ee9cd8599a47f7e44..83c84c2cc59bdfa4902cab414e8a3916e3c041e1 100644 (file)
@@ -358,7 +358,7 @@ pub mod imp {
   }
 
   impl TablePlayerSpec {
-    pub fn account_glob(&self) -> String {
+    pub fn account_glob(&self, _instance_name: &InstanceName) -> String {
       fn scope_glob(scope: AccountScope) -> String {
         let mut out = "".to_string();
         scope.display_name(&[""], |s| Ok::<_,Void>(out += s)).unwrap();