spikard_cli/codegen/
openapi.rs1use anyhow::{Context, Result};
4use openapiv3::OpenAPI;
5use std::path::Path;
6
7pub fn parse_openapi_schema(path: &Path) -> Result<OpenAPI> {
9 let content = std::fs::read_to_string(path)
10 .with_context(|| format!("Failed to read OpenAPI schema from {}", path.display()))?;
11
12 let spec: OpenAPI = serde_json::from_str(&content)
13 .or_else(|_| serde_saphyr::from_str(&content).context("Failed to parse as JSON or YAML"))
14 .with_context(|| format!("Failed to parse OpenAPI schema from {}", path.display()))?;
15
16 Ok(spec)
17}