openapi_clap/lib.rs
1//! Auto-generate clap CLI commands from OpenAPI specs.
2//!
3//! Parses a dereferenced OpenAPI JSON, extracts operations into an IR,
4//! builds a clap `Command` tree, and dispatches HTTP requests.
5//!
6//! # Usage
7//!
8//! ```no_run
9//! use openapi_clap::{CliConfig, build_commands, extract_operations, find_operation, dispatch};
10//! use openapi_deref::resolve;
11//! use reqwest::blocking::Client;
12//!
13//! let spec_json = r#"{"openapi":"3.0.0","paths":{}}"#;
14//! let raw: serde_json::Value = serde_json::from_str(spec_json).unwrap();
15//! let resolved = resolve(&raw).unwrap();
16//! let ops = extract_operations(&resolved.value);
17//!
18//! let config = CliConfig::new("myapi", "My API CLI", "https://api.example.com");
19//!
20//! let cmd = build_commands(&config, &ops);
21//! ```
22
23pub mod builder;
24pub mod dispatch;
25pub mod error;
26pub mod spec;
27
28pub use builder::{
29 build_commands, find_operation, normalize_group, normalize_operation_id, CliConfig,
30};
31pub use dispatch::dispatch;
32pub use error::DispatchError;
33pub use spec::{extract_operations, is_bool_schema, ApiOperation, Param};
34
35// Re-export dependencies for downstream crates
36pub use clap;
37pub use reqwest;