chiark / gitweb /
Config inspection: Allow inspection of multiple keys
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 10 Jan 2023 01:09:46 +0000 (01:09 +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>
src/config.rs

index c20cfcd90d9db842ddf79797181a38a52a8c19d9..c88832e1583073bf83b923e9c36d86e933a30e1d 100644 (file)
@@ -97,14 +97,19 @@ pub trait InspectableConfig {
 
 #[throws(AE)]
 pub fn implement_print_config<'f>(
-  key: &str,
+  arg: &str,
   inspect_key: &dyn Fn(&str) -> Option<&'f dyn InspectableConfigValue>
 ) {
-  if let Some(inspectable) = inspect_key(key) {
-    println!("{}", DisplayInspectable(inspectable));
-  } else {
-    throw!(anyhow!("unknown config key {:?}", key));
-  }
+  let output = arg
+    .split(',')
+    .map(|key| {
+      let insp = inspect_key(key)
+        .ok_or_else(|| anyhow!("unknown config key {:?}", key))?;
+      Ok::<_,AE>(DisplayInspectable(insp).to_string())
+    })
+    .collect::<Result<Vec<_>,_>>()?
+    .join(" ");
+  println!("{}",  output);
 }
 
 pub trait InspectableConfigValue {