use anyhow::Result;
use tracing::{info, warn};

/// 将来的な GitOps 連携を見据えた Deployer HTTP API との接続ポイント。
///
/// 現時点ではステータスの簡易チェックのみを行い、
/// API 形状が固まり次第ここから `apply` 相当を実装できるようにしておく。
pub async fn run_deployer_command(endpoint: &str, action: &str) -> Result<()> {
    match action {
        "status" => {
            // プレースホルダ実装:
            // - 将来的には /health や /api/v1/admin/nodes 等を叩く。
            let url = format!("{}/health", endpoint.trim_end_matches('/'));
            info!("checking deployer status at {}", url);

            let response = reqwest::get(&url).await?;
            if response.status().is_success() {
                let body = response.text().await.unwrap_or_default();
                println!("deployer status OK: {}", body);
            } else {
                warn!(
                    "deployer status not OK: HTTP {}",
                    response.status().as_u16()
                );
            }
        }
        other => {
            warn!("unsupported deployer action: {}", other);
        }
    }

    Ok(())
}
