load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("//bazel/go:go_test.bzl", "go_test")

go_library(
    name = "terraform",
    srcs = [
        "loader.go",
        "terraform.go",
        "variables.go",
    ],
    embedsrcs = [
        "terraform/aws/.terraform.lock.hcl",
        "terraform/aws/main.tf",
        "terraform/aws/modules/instance_group/main.tf",
        "terraform/aws/modules/instance_group/variables.tf",
        "terraform/aws/modules/load_balancer_target/main.tf",
        "terraform/aws/modules/load_balancer_target/output.tf",
        "terraform/aws/modules/load_balancer_target/variables.tf",
        "terraform/aws/modules/public_private_subnet/main.tf",
        "terraform/aws/modules/public_private_subnet/output.tf",
        "terraform/aws/modules/public_private_subnet/variables.tf",
        "terraform/aws/outputs.tf",
        "terraform/aws/variables.tf",
        "terraform/azure/.terraform.lock.hcl",
        "terraform/azure/main.tf",
        "terraform/azure/modules/load_balancer_backend/main.tf",
        "terraform/azure/modules/load_balancer_backend/outputs.tf",
        "terraform/azure/modules/load_balancer_backend/variables.tf",
        "terraform/azure/modules/scale_set/main.tf",
        "terraform/azure/modules/scale_set/variables.tf",
        "terraform/azure/outputs.tf",
        "terraform/azure/variables.tf",
        "terraform/gcp/.terraform.lock.hcl",
        "terraform/gcp/main.tf",
        "terraform/gcp/modules/instance_group/main.tf",
        "terraform/gcp/modules/instance_group/outputs.tf",
        "terraform/gcp/modules/instance_group/variables.tf",
        "terraform/gcp/modules/loadbalancer/main.tf",
        "terraform/gcp/modules/loadbalancer/variables.tf",
        "terraform/gcp/outputs.tf",
        "terraform/gcp/variables.tf",
        "terraform/iam/aws/README.md",
        "terraform/iam/aws/main.tf",
        "terraform/iam/aws/outputs.tf",
        "terraform/iam/aws/variables.tf",
        "terraform/iam/azure/README.md",
        "terraform/iam/azure/main.tf",
        "terraform/iam/azure/outputs.tf",
        "terraform/iam/azure/variables.tf",
        "terraform/iam/gcp/README.md",
        "terraform/iam/gcp/main.tf",
        "terraform/iam/gcp/outputs.tf",
        "terraform/iam/gcp/variables.tf",
        "terraform/qemu/.terraform.lock.hcl",
        "terraform/qemu/main.tf",
        "terraform/qemu/modules/instance_group/domain.xsl",
        "terraform/qemu/modules/instance_group/main.tf",
        "terraform/qemu/modules/instance_group/outputs.tf",
        "terraform/qemu/modules/instance_group/variables.tf",
        "terraform/qemu/outputs.tf",
        "terraform/qemu/variables.tf",
        "terraform/openstack/.terraform.lock.hcl",
        "terraform/openstack/main.tf",
        "terraform/openstack/modules/instance_group/main.tf",
        "terraform/openstack/modules/instance_group/outputs.tf",
        "terraform/openstack/modules/instance_group/variables.tf",
        "terraform/openstack/modules/loadbalancer/main.tf",
        "terraform/openstack/modules/loadbalancer/variables.tf",
        "terraform/openstack/outputs.tf",
        "terraform/openstack/variables.tf",
    ],
    importpath = "github.com/edgelesssys/constellation/v2/cli/internal/terraform",
    visibility = ["//cli:__subpackages__"],
    deps = [
        "//internal/cloud/cloudprovider",
        "//internal/file",
        "@com_github_hashicorp_go_version//:go-version",
        "@com_github_hashicorp_hc_install//:hc-install",
        "@com_github_hashicorp_hc_install//fs",
        "@com_github_hashicorp_hc_install//product",
        "@com_github_hashicorp_hc_install//releases",
        "@com_github_hashicorp_hc_install//src",
        "@com_github_hashicorp_terraform_exec//tfexec",
        "@com_github_hashicorp_terraform_json//:terraform-json",
        "@com_github_spf13_afero//:afero",
    ],
)

go_test(
    name = "terraform_test",
    srcs = [
        "loader_test.go",
        "terraform_test.go",
    ],
    embed = [":terraform"],
    deps = [
        "//internal/cloud/cloudprovider",
        "//internal/constants",
        "//internal/file",
        "@com_github_hashicorp_terraform_exec//tfexec",
        "@com_github_hashicorp_terraform_json//:terraform-json",
        "@com_github_spf13_afero//:afero",
        "@com_github_stretchr_testify//assert",
        "@com_github_stretchr_testify//require",
    ],
)