From 1cc907eb4a44056812b82ec45e07b4a501712d08 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 10 Jan 2023 22:42:49 +0000 Subject: [PATCH] Config inspection: support "server" key on server Signed-off-by: Ian Jackson --- server/server.rs | 8 +++++--- src/config.rs | 7 +++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/server/server.rs b/server/server.rs index 7b34e9b..44dbad6 100644 --- a/server/server.rs +++ b/server/server.rs @@ -169,15 +169,17 @@ async fn async_main(opts: Opts, daemon: Option) { 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())?; } diff --git a/src/config.rs b/src/config.rs index a83d16e..026359c 100644 --- a/src/config.rs +++ b/src/config.rs @@ -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), + }) } } -- 2.30.2