caffeine_lang/codegen/platforms
Types
Declarative configuration for a vendor’s Terraform output: the provider block, required-providers metadata, input variables, and the function that turns IRs into Terraform resources.
pub type Platform {
Platform(
vendor: vendor.Vendor,
provider_name: String,
provider_source: String,
provider_version: String,
provider_attributes: List(#(String, hcl.Expr)),
variables: List(terraform.Variable),
generate_resources: fn(
List(ir.IntermediateRepresentation(ir.Resolved)),
) -> Result(
#(List(terraform.Resource), List(String)),
errors.CompilationError,
),
)
}
Constructors
-
Platform( vendor: vendor.Vendor, provider_name: String, provider_source: String, provider_version: String, provider_attributes: List(#(String, hcl.Expr)), variables: List(terraform.Variable), generate_resources: fn( List(ir.IntermediateRepresentation(ir.Resolved)), ) -> Result( #(List(terraform.Resource), List(String)), errors.CompilationError, ), )
Values
pub fn datadog_platform() -> Platform
pub fn generate_terraform(
p: Platform,
irs: List(ir.IntermediateRepresentation(ir.Resolved)),
) -> Result(#(String, List(String)), errors.CompilationError)
Generate complete Terraform output (boilerplate + resources) for a platform. Used in tests to produce full HCL for a single vendor in isolation.
pub fn provider(p: Platform) -> terraform.Provider
Derive the Provider block for a platform.
pub fn terraform_settings(
p: Platform,
) -> terraform.TerraformSettings
Derive the TerraformSettings block for a platform.