oph 0.1.0

OpenHealth CLI - Universal development tool for the OpenHealth team
Documentation
use crate::config::Environment;
use crate::docker;
use crate::ui;
use anyhow::Result;
use clap::Subcommand;

#[derive(Subcommand, Clone, Copy)]
pub enum ValidateCommand {
    /// Validate development docker-compose configuration
    Dev,
    /// Validate production docker-compose configuration
    Prod,
}

pub fn run(cmd: ValidateCommand) -> Result<()> {
    docker::check_docker()?;

    match cmd {
        ValidateCommand::Dev => validate(Environment::Dev),
        ValidateCommand::Prod => validate(Environment::Prod),
    }

    Ok(())
}

fn validate(env: Environment) {
    ui::info(&format!("Validating {env} configuration..."));

    let output = docker::compose_output(env, &["config", "--quiet"]);

    match output {
        Ok(_) => {
            ui::success("Configuration is valid!");
        }
        Err(e) => {
            ui::error(&format!("Configuration has errors: {e}"));
        }
    }
}