use std::fs;
use abscissa_core::clap::Parser;
use crate::conclude::Output;
use crate::config;
use crate::prelude::*;
#[derive(Command, Debug, Parser)]
pub struct ValidateCmd {}
impl Runnable for ValidateCmd {
fn run(&self) {
let config = app_config();
trace!("loaded configuration: {:#?}", *config);
match config::config_path() {
Some(p) => {
match fs::read_to_string(p.clone()) {
Ok(content) => {
if content.is_empty() {
Output::error("the configuration file is empty").exit();
}
}
Err(e) => {
Output::error(format!("error reading the configuration file {p:?}: {e}"))
.exit()
}
}
}
None => Output::error("no configuration file found").exit(),
}
match config.validate_config() {
Ok(_) => Output::success_msg("configuration is valid").exit(),
Err(_) => Output::error("configuration is invalid").exit(),
}
}
}