chiark / gitweb /
Config inspection: Move process::exit call
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 10 Jan 2023 01:41:27 +0000 (01:41 +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>
client/client.rs
server/server.rs
src/config.rs

index b7d9d1e167bba034fe77b642f5b00712cc874399..0d4a53c0163115889d5980e508b2a11fcccddbe1 100644 (file)
@@ -343,15 +343,14 @@ async fn main() {
       }
       process::exit(0);
     }
-    if let Some(arg) = &opts.print_config {
-      implement_print_config(&mut ics.iter(), arg, &|ic, k| Some(match k {
-        "link" => &ic.link,
-        "server" => &ic.link.server,
-        "client" => &ic.link.client,
-        k => return ic.inspect_key(k),
-      }))?;
-      process::exit(0);
-    }
+
+    implement_print_config(&mut ics.iter(), &opts.print_config,
+                           &|ic, k| Some(match k {
+      "link" => &ic.link,
+      "server" => &ic.link.server,
+      "client" => &ic.link.client,
+      k => return ic.inspect_key(k),
+    }))?;
 
     Ok((ics,))
   });
index 15ba532fe3278aedfe213f2862d53eeca2357b2a..0f240fbcb3e8e72b9e8dbb02bcbde1d60f7c25e9 100644 (file)
@@ -160,11 +160,8 @@ async fn async_main(opts: Opts, daemon: Option<Daemoniser>) {
   {
     let global_config = config::InstanceConfigGlobal::from(&ics);
 
-    if let Some(arg) = &opts.print_config {
-      implement_print_config(&mut iter::once(&global_config),
-                             arg, &|_,__| None)?;
-      process::exit(0);
-    }
+    implement_print_config(&mut iter::once(&global_config),
+                           &opts.print_config, &|_,__| None)?;
 
     if let Some(pidfile_path) = opts.pidfile.as_ref() {
       (||{
index eab88152a5f6b14776fc0b619b67c44ac9196402..6db3c12f36ae60c5be48bbcaf29dd34b0ee528f5 100644 (file)
@@ -98,7 +98,7 @@ pub trait InspectableConfig: Debug {
 #[throws(AE)]
 pub fn implement_print_config<'c, C: InspectableConfig>(
   configs: impl Iterator<Item=&'c C>,
-  arg: &str,
+  arg: &Option<String>,
   extra_key: &dyn Fn(&'c C, &str) -> Option<&'c dyn InspectableConfigValue>
 ) {
   #[throws(AE)]
@@ -120,8 +120,11 @@ pub fn implement_print_config<'c, C: InspectableConfig>(
     println!("{}",  output);
   }
 
-  for config in configs {
-    print_one_config(config, arg, &|k| extra_key(config, k))?;
+  if let Some(arg) = arg {
+    for config in configs {
+      print_one_config(config, arg, &|k| extra_key(config, k))?;
+    }
+    process::exit(0);
   }
 }