terraform/telemetry.grept.hcl (21 lines of code) (raw):
# re-render the telemetry file to use azapi_client_config instead of azurerm_client_config
locals {
telemetry_azapi_content = try(replace(data.http.main_telemetry.response_body, "azurerm_client_config", "azapi_client_config"), "")
azurerm_provider_declared = try(strcontains(file("terraform.tf"), "source = \"hashicorp/azurerm\""), false)
}
# get the reference telemetry file
data "http" "main_telemetry" {
request_headers = merge({}, local.common_http_headers)
url = "${local.url_prefix}/main.telemetry.tf"
}
# Local file must use either azurerm_client_config or azapi_client_config
rule "must_be_true" "main_telemetry" {
condition = try(sha1(file("main.telemetry.tf")) == sha1(data.http.main_telemetry.response_body), false) || try(sha1(file("main.telemetry.tf")) == sha1(local.telemetry_azapi_content), false)
error_message = "The main.telemetry.tf file must be present in the repository."
}
# Default to azurerm_client_config for the fix
fix "local_file" "main_telemetry" {
rule_ids = [rule.must_be_true.main_telemetry.id]
paths = ["main.telemetry.tf"]
content = local.azurerm_provider_declared ? data.http.main_telemetry.response_body : local.telemetry_azapi_content
}