oxipage 0.7.0

Oxipage CLI — 블로그/프로젝트/링크/사이트 관리 커맨드라인 도구 (doc/04)
use crate::client::Client;
use crate::output::Output;
use clap::Args;

#[derive(Args, Debug, Clone)]
pub struct CacheArgs {
    /// Extension to refresh (omit for all)
    #[arg(long)]
    pub extension: Option<String>,
}

pub(crate) async fn cache(c: CacheArgs, out: &Output, client: &Client) -> anyhow::Result<()> {
    let path = if let Some(ref ext) = c.extension {
        format!("/api/console/cache/refresh?extension={}", ext)
    } else {
        "/api/console/cache/refresh".to_string()
    };

    match client.post(&path, &serde_json::json!({})).await {
        Ok(res) => out.data(res, "cache refresh"),
        Err(e) => {
            // Graceful fallback if server isn't running
            anyhow::bail!(
                "Cache refresh failed: {}. Make sure `oxipage console` is running.\n\
                 Alternatively, run `oxipage build` to generate the site with existing data.",
                e
            )
        }
    }
}