load("@aspect_bazel_lib//lib:transitions.bzl", "platform_transition_filegroup")
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("//build/platforms:def.bzl", "multiplatform_transition_filegroup")
load(":defs.bzl", "buildkind")

buildkind(
    name = "buildkind",
    build_setting_default = "full",
)

# True if user requested a lite build via --//metropolis/cli/metroctl:buildkind=lite .
config_setting(
    name = "buildkind_lite",
    flag_values = {
        ":buildkind": "lite",
    },
)

# By default, the architecture for node binaries is inherited from the metroctl
# binary, but it can be changed with this flag.
# Example: --//metropolis/cli/metroctl:node_arch=x86_64
string_flag(
    name = "node_arch",
    build_setting_default = "",
    values = [
        "",
        "x86_64",
        "aarch64",
    ],
    visibility = ["//visibility:public"],
)

config_setting(
    name = "node_arch_x86_64",
    flag_values = {":node_arch": "x86_64"},
)

config_setting(
    name = "node_arch_aarch64",
    flag_values = {":node_arch": "aarch64"},
)

config_setting(
    name = "node_arch_inherit_x86_64",
    constraint_values = ["@platforms//cpu:x86_64"],
    flag_values = {":node_arch": ""},
)

config_setting(
    name = "node_arch_inherit_aarch64",
    constraint_values = ["@platforms//cpu:aarch64"],
    flag_values = {":node_arch": ""},
)

go_library(
    name = "metroctl_lib",
    srcs = [
        "cmd_certs.go",
        "cmd_cluster.go",
        "cmd_cluster_configure.go",
        "cmd_cluster_takeownership.go",
        "cmd_install.go",
        "cmd_install_ssh.go",
        "cmd_install_usb.go",
        "cmd_k8s_configure.go",
        "cmd_k8scredplugin.go",
        "cmd_node.go",
        "cmd_node_approve.go",
        "cmd_node_logs.go",
        "cmd_node_metrics.go",
        "cmd_node_set.go",
        "main.go",
        "rpc.go",
        "table_node.go",
    ],
    importpath = "source.monogon.dev/metropolis/cli/metroctl",
    visibility = ["//visibility:private"],
    deps = [
        "//go/clitable",
        "//go/logging",
        "//metropolis/cli/flagdefs",
        "//metropolis/cli/metroctl/core",
        "//metropolis/node",
        "//metropolis/node/core/rpc",
        "//metropolis/node/core/rpc/resolver",
        "//metropolis/proto/api",
        "//metropolis/proto/common",
        "//osbase/logtree",
        "//osbase/logtree/proto",
        "//osbase/net/sshtakeover",
        "//osbase/oci",
        "//osbase/oci/registry",
        "//osbase/structfs",
        "//version",
        "@com_github_adrg_xdg//:xdg",
        "@com_github_schollz_progressbar_v3//:progressbar",
        "@com_github_spf13_cobra//:cobra",
        "@io_bazel_rules_go//go/runfiles",
        "@io_k8s_apimachinery//pkg/apis/meta/v1:meta",
        "@io_k8s_client_go//pkg/apis/clientauthentication/v1:clientauthentication",
        "@io_k8s_utils//ptr",
        "@org_golang_google_grpc//:grpc",
        "@org_golang_google_protobuf//encoding/prototext",
        "@org_golang_google_protobuf//proto",
        "@org_golang_google_protobuf//types/known/fieldmaskpb",
        "@org_golang_x_crypto//ssh",
        "@org_golang_x_crypto//ssh/agent",
        "@org_golang_x_net//proxy",
        "@org_golang_x_sync//semaphore",
        "@org_golang_x_term//:term",
    ],
)

platform_transition_filegroup(
    name = "node_arch_deps",
    srcs = [
        "//metropolis/cli/takeover",
        "//metropolis/installer:kernel",
        "//metropolis/node:oci_image",
    ],
    target_platform = select(
        {
            ":node_arch_x86_64": "//build/platforms:linux_x86_64",
            ":node_arch_aarch64": "//build/platforms:linux_aarch64",
            ":node_arch_inherit_x86_64": "//build/platforms:linux_x86_64",
            ":node_arch_inherit_aarch64": "//build/platforms:linux_aarch64",
        },
        no_match_error = """
        Metropolis Node does not support this architecture.
        Specify a supported architecture with the node_arch flag.""",
    ),
    visibility = ["//visibility:private"],
)

go_binary(
    name = "metroctl",
    data = select({
        ":buildkind_lite": [],
        "//conditions:default": [":node_arch_deps"],
    }),
    embed = [":metroctl_lib"],
    visibility = ["//visibility:public"],
)

# metroctl_lite is the same binary as normal metroctl, but without any data
# dependencies.
go_binary(
    name = "metroctl_lite",
    data = [],
    embed = [":metroctl_lib"],
    visibility = ["//metropolis:__subpackages__"],
)

config_setting(
    name = "race_enabled",
    flag_values = {"@io_bazel_rules_go//go/config:race": "True"},
)

# This target serves as a test that metroctl can be built for all listed
# platforms.
multiplatform_transition_filegroup(
    name = "metroctl_lite_all_platforms",
    srcs = [":metroctl_lite"],
    platforms = [
        "//build/platforms:linux_x86_64",
        "//build/platforms:linux_aarch64",
        "@io_bazel_rules_go//go/toolchain:darwin_amd64",
        "@io_bazel_rules_go//go/toolchain:darwin_arm64",
        "@io_bazel_rules_go//go/toolchain:windows_amd64",
        "@io_bazel_rules_go//go/toolchain:windows_arm64",
    ],
    target_compatible_with = select({
        # We can't build this with race enabled because
        # we don't have a C toolchain for all platforms.
        ":race_enabled": ["@platforms//:incompatible"],
        "//conditions:default": [],
    }),
)
