cellos-ctl 0.5.0

cellctl — kubectl-style CLI for CellOS execution cells and formations. Thin HTTP client over cellos-server with apply/get/describe/logs/events/webui.
Documentation
//! `cellctl version` — print version + (optionally) the server's reported version.

use serde_json::Value;

use crate::client::CellosClient;
use crate::exit::CtlResult;

pub async fn run(client: &CellosClient) -> CtlResult<()> {
    println!("client: cellctl {}", env!("CARGO_PKG_VERSION"));

    // Best-effort server version lookup; never fails the whole command if the
    // server is unreachable — kubectl behaves the same way.
    match client.get_json::<Value>("/v1/version").await {
        Ok(v) => {
            let svr = v
                .get("version")
                .and_then(|x| x.as_str())
                .unwrap_or("unknown");
            println!("server: cellos-server {svr} ({})", client.base_url());
        }
        Err(e) => {
            eprintln!("server: <unreachable: {e}>");
        }
    }
    Ok(())
}