load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_cross_binary", "go_library")

go_library(
    name = "cli_lib",
    srcs = ["main.go"],
    importpath = "github.com/edgelesssys/constellation/v2/cli",
    visibility = ["//visibility:private"],
    deps = ["//cli/cmd"],
)

# keep
go_binary(
    name = "cli_oss",
    embed = [":cli_lib"],
    pure = "on",
    visibility = ["//visibility:public"],
)

# keep
go_binary(
    name = "cli_enterprise",
    embed = [":cli_lib"],
    gotags = ["enterprise"],
    pure = "on",
    visibility = ["//visibility:public"],
)

[
    go_cross_binary(
        name = "cli_%s_%s" % (edition, platform),
        platform = "@io_bazel_rules_go//go/toolchain:" + platform,
        target = ":cli_%s" % edition,
        visibility = ["//visibility:public"],
    )
    for platform in [
        "darwin_amd64",
        "darwin_arm64",
        "linux_amd64",
        "linux_arm64",
        "windows_amd64",
    ]
    for edition in [
        "oss",
        "enterprise",
    ]
]

[
    go_cross_binary(
        name = "cli_%s_host" % edition,
        platform = "@local_config_platform//:host",
        target = ":cli_%s" % edition,
        visibility = ["//visibility:public"],
    )
    for edition in [
        "oss",
        "enterprise",
    ]
]

alias(
    name = "cli_edition_host",
    actual = select(
        {
            "//bazel/settings:cli_edition_enterprise": ":cli_enterprise_host",
            "//bazel/settings:cli_edition_oss": ":cli_oss_host",
            "//conditions:default": ":cli_oss_host",
        },
    ),
    visibility = ["//visibility:public"],
)
