chiark / gitweb /
Config inspection: support "server" key on server
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 10 Jan 2023 22:42:49 +0000 (22:42 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 11 Jan 2023 02:12:41 +0000 (02:12 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
server/server.rs
src/config.rs

index 7b34e9b6e2a9a196f354041de995cda4957a017c..44dbad6ff4130bd1dd05840a97620e1069b82f1e 100644 (file)
@@ -169,15 +169,17 @@ async fn async_main(opts: Opts, daemon: Option<Daemoniser>) {
 
   config::startup(
     "hippotatd", LinkEnd::Server,
-    &opts.config, &opts.log, |_, ics|
+    &opts.config, &opts.log, |server_name, ics|
   {
     let global_config = config::InstanceConfigGlobal::from(&ics);
+    let server_name = server_name.expect("LinkEnd::Server didn't do its job");
 
     {
       let pc = PrintConfigOpt(&opts.print_config);
+      let gc = (&server_name, &global_config);
 
-      if pc.keys().all(|k| global_config.inspect_key(k).is_some()) {
-        pc.implement(&mut iter::once(&global_config))?;
+      if pc.keys().all(|k| gc.inspect_key(k).is_some()) {
+        pc.implement(&mut iter::once(&gc))?;
       } else {
         pc.implement(&mut ics.iter())?;
       }
index a83d16ec80a35fceb191ca5850012c2ecea808b4..026359cc9eca35831e53eab21ea2abe8ae76bfd9 100644 (file)
@@ -99,10 +99,13 @@ pub trait InspectableConfig: Debug {
                  -> Option<&dyn InspectableConfigValue>;
 }
 
-impl InspectableConfig for InstanceConfigGlobal {
+impl InspectableConfig for (&ServerName, &InstanceConfigGlobal) {
   fn inspect_key(&self, field: &'_ str)
                  -> Option<&dyn InspectableConfigValue> {
-    self.inspect_key_auto(field)
+    Some(match field {
+      "server" => self.0,
+      k => return self.1.inspect_key_auto(k),
+    })
   }
 }