| Crates.io | hemmer-provider-generator-parser |
| lib.rs | hemmer-provider-generator-parser |
| version | 0.4.2 |
| created_at | 2025-10-29 19:03:46.431783+00 |
| updated_at | 2026-01-19 03:42:05.693496+00 |
| description | Multi-format parsers for cloud SDK specifications (Smithy, OpenAPI, Discovery, Protobuf) |
| homepage | https://github.com/hemmer-io/hemmer-provider-generator |
| repository | https://github.com/hemmer-io/hemmer-provider-generator |
| max_upload_size | |
| id | 1907206 |
| size | 458,869 |
Multi-format parsers for cloud SDK specifications (Smithy, OpenAPI, Discovery, Protobuf).
This crate provides parsers for four different cloud SDK specification formats, converting them into a unified intermediate representation (ServiceDefinition). Each parser extracts resources, operations, and type information from the respective spec format.
| Format | Cloud Provider(s) | Parser Module |
|---|---|---|
| Smithy | AWS | smithy |
| OpenAPI 3.0 | Kubernetes, Azure | openapi |
| Discovery | Google Cloud | discovery |
| Protobuf | gRPC Services | protobuf |
use hemmer_provider_generator_parser::smithy::SmithyParser;
use std::fs;
let spec_content = fs::read_to_string("s3-model.json")?;
let parser = SmithyParser::new(&spec_content)?;
let service_def = parser.parse("s3")?;
println!("Service: {}", service_def.name);
println!("Resources: {}", service_def.resources.len());
use hemmer_provider_generator_parser::openapi::OpenApiParser;
use std::fs;
let spec_content = fs::read_to_string("kubernetes-api.json")?;
let parser = OpenApiParser::new(&spec_content)?;
let service_def = parser.parse("kubernetes")?;
use hemmer_provider_generator_parser::discovery::DiscoveryParser;
use std::fs;
let spec_content = fs::read_to_string("storage-v1.json")?;
let parser = DiscoveryParser::new(&spec_content)?;
let service_def = parser.parse("storage")?;
use hemmer_provider_generator_parser::protobuf::ProtobufParser;
use std::fs;
let spec_bytes = fs::read("service.pb")?;
let parser = ProtobufParser::new(&spec_bytes)?;
let service_def = parser.parse("storage")?;
ServiceDefinition typeFieldTypeSpec File → Parser → ServiceDefinition (IR) → Generator
Each parser implements the same transformation:
FieldTypeServiceDefinition IRFor detailed API documentation, see docs.rs/hemmer-provider-generator-parser.
Licensed under the Apache License, Version 2.0. See LICENSE for details.