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

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.

Search Document