diff --git a/src/main.rs b/src/main.rs index fb6057a..2333e35 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,6 +40,7 @@ use error::Error; use slog::Logger; use paho_mqtt::AsyncClient; +use crate::config::Config; fn main() { use clap::{crate_version, crate_description, crate_name}; @@ -59,6 +60,10 @@ fn main() { .help("Print a default config to stdout instead of running") .long("print-default") ) + .arg(Arg::with_name("check config") + .help("Check config for validity") + .long("check") + ) .arg(Arg::with_name("dump") .help("Dump all databases into the given directory") .long("dump") @@ -87,6 +92,19 @@ fn main() { // Early return to exit. return; + } else if matches.is_present("check config") { + let configpath = matches.value_of("config").unwrap_or("/etc/diflouroborane.dhall"); + match config::read(&PathBuf::from_str(configpath).unwrap()) { + Ok(cfg) => { + //TODO: print a normalized version of the supplied config + println!("config is valid"); + std::process::exit(0); + } + Err(e) => { + eprintln!("{}", e); + std::process::exit(-1); + } + } } let retval;