# A helper function to get the go platform string of the Bazel host.
# This can be used to do cross-platform go compilations.
# Example:
#    $ bazelisk run //bazel:go_platform
#    darwin_arm64
py_binary(
    name = "go_platform",
    srcs = ["go_platform.py"],
    data = ["@go_sdk//:bin/go"],
    tags = ["no-remote"],  # Need the platform of the host
)

_GO_PLATFORM = """
import os
import subprocess

# https://bazel.build/reference/be/make-variables#predefined_label_variables
go_exe = os.path.abspath("$(execpath @go_sdk//:bin/go)")

result = subprocess.run([
    go_exe,
    "version",
], capture_output=True, encoding="utf-8")

# e.g. go version go1.18 darwin/arm64
os_arch = result.stdout.strip().split(" ")[3]
# e.g. darwin/arm64
print(os_arch.replace("/", "_"))
"""

genrule(
    name = "create_go_platform_script",
    outs = ["go_platform.py"],
    cmd = "echo '%s' > $@" % _GO_PLATFORM,
    tools = [
        "@go_sdk//:bin/go",
    ],
)
