Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
{
let global_config = config::InstanceConfigGlobal::from(&ics);
- if let Some(key) = opts.print_config.as_ref() {
- if let Some(inspectable) = global_config.inspect_key(key) {
- println!("{}", DisplayInspectable(inspectable));
- process::exit(0);
- } else {
- throw!(anyhow!("unknown config key {:?}", key));
- }
+ if let Some(arg) = &opts.print_config {
+ global_config.implement_print_config(arg)?;
+ process::exit(0);
}
if let Some(pidfile_path) = opts.pidfile.as_ref() {
pub trait InspectableConfig {
fn inspect_key(&self, field: &'_ str)
-> Option<&dyn InspectableConfigValue>;
+
+ #[throws(AE)]
+ fn implement_print_config(&self, key: &str) {
+ if let Some(inspectable) = self.inspect_key(key) {
+ println!("{}", DisplayInspectable(inspectable));
+ } else {
+ throw!(anyhow!("unknown config key {:?}", key));
+ }
+ }
}
pub trait InspectableConfigValue {