| Crates.io | hemmer-provider-generator-generator |
| lib.rs | hemmer-provider-generator-generator |
| version | 0.4.2 |
| created_at | 2025-10-29 19:04:33.706508+00 |
| updated_at | 2026-01-19 03:45:10.507092+00 |
| description | Code generation engine for Hemmer infrastructure providers |
| homepage | https://github.com/hemmer-io/hemmer-provider-generator |
| repository | https://github.com/hemmer-io/hemmer-provider-generator |
| max_upload_size | |
| id | 1907207 |
| size | 325,625 |
Code generation engine for Hemmer infrastructure providers.
This crate transforms cloud-agnostic service definitions into complete, working Hemmer provider packages. It uses the Tera template engine to generate KCL schemas, Rust code, tests, and documentation.
FieldType to Rust and KCL typeskcl_type, rust_type, and capitalize template filtersuse hemmer_provider_generator_generator::ProviderGenerator;
use hemmer_provider_generator_common::{ServiceDefinition, Provider};
use std::path::PathBuf;
// Create a service definition (typically from a parser)
let service_def = ServiceDefinition {
provider: Provider::Aws,
name: "s3".to_string(),
sdk_version: "1.0.0".to_string(),
resources: vec![/* resources */],
};
// Generate provider package
let generator = ProviderGenerator::new();
let output_dir = PathBuf::from("./provider-s3");
generator.generate(&service_def, &output_dir)?;
provider-{service}/
├── Cargo.toml # Package manifest with SDK dependencies
├── README.md # Auto-generated documentation
├── provider.k # KCL manifest with resource schemas
└── src/
├── lib.rs # Provider struct and resource accessors
└── resources/
├── mod.rs # Resource exports
└── {resource}.rs # Individual resource implementations
The crate includes 6 Tera templates:
provider.k.tera - KCL schema definitionsCargo.toml.tera - Package manifestlib.rs.tera - Provider struct and accessorsresource.rs.tera - Individual resource implementationsresources_mod.rs.tera - Resource module exportsREADME.md.tera - Provider documentation| FieldType | Rust Type | KCL Type |
|---|---|---|
| String | String |
str |
| Integer | i64 |
int |
| Float | f64 |
float |
| Boolean | bool |
bool |
| DateTime | String |
str |
| List(T) | Vec<T> |
[T] |
| Map(K,V) | HashMap<K,V> |
{K:V} |
// In templates:
{{ field.field_type | kcl_type }} // Convert to KCL type
{{ field.field_type | rust_type }} // Convert to Rust type
{{ resource.name | capitalize }} // Capitalize string
For detailed API documentation, see docs.rs/hemmer-provider-generator-generator.
Licensed under the Apache License, Version 2.0. See LICENSE for details.