# Non-predefined variables must be escaped with "$$" (e.g. "$$FOO"); see
# https://bazel.build/reference/be/make-variables#predefined_label_variables.
_SCRIPT_TEMPLATE = """
# Find the directories where each of the four binaries are located.
PROTOC_PATH=$$(realpath $$(dirname $(rootpath {protoc_label})))
PROTOC_GEN_GO_PATH=$$(realpath $$(dirname \\
    $(rootpath @org_golang_google_protobuf//cmd/protoc-gen-go)))
PROTOC_GEN_TWIRP_PATH=$$(realpath $$(dirname \\
    $(rootpath @com_github_twitchtv_twirp//protoc-gen-twirp)))
PROTOC_GEN_TWIRP_TYPESCRIPT_PATH=$$(realpath $$(dirname \\
    $(rootpath @com_github_skia_dev_protoc_gen_twirp_typescript//:protoc-gen-twirp_typescript)))

# Add binaries to PATH.
export PATH=$$PROTOC_PATH:$$PATH
export PATH=$$PROTOC_GEN_GO_PATH:$$PATH
export PATH=$$PROTOC_GEN_TWIRP_PATH:$$PATH
export PATH=$$PROTOC_GEN_TWIRP_TYPESCRIPT_PATH:$$PATH

# Change into the directory where Bazel was invoked.
cd $$BUILD_WORKING_DIRECTORY

protoc $$@
"""

[
    genrule(
        name = "gen_script_" + script_suffix,
        outs = ["protoc_%s.sh" % script_suffix],
        cmd = "echo '%s' > $@" % _SCRIPT_TEMPLATE.format(
            protoc_label = protoc_label,
        ),
        exec_tools = [
            protoc_label,
            "@org_golang_google_protobuf//cmd/protoc-gen-go",
            "@com_github_twitchtv_twirp//protoc-gen-twirp",
            "@com_github_skia_dev_protoc_gen_twirp_typescript//:protoc-gen-twirp_typescript",
        ],
    )
    for script_suffix, protoc_label in [
        [
            "linux_x64",
            "@protoc_linux_x64//:bin/protoc",
        ],
        [
            "mac_x64",
            "@protoc_mac_x64//:bin/protoc",
        ],
    ]
]

# Wrapper script around the "protoc" binary.
#
# The "protoc" binary requires plugins (that is, binaries named "protoc-gen-<TARGET LANGUAGE>") to
# be in PATH. This script adds all protoc plugin binaries used in this repository to PATH, then
# forwards all command-line arguments to the "protoc" binary.
#
# Here is the list of protoc plugin binaries used in this repository:
#
#  - protoc-gen-go
#  - protoc-gen-twirp
#  - protoc-gen-twirp_typescript
#
# Reference: https://bazel.build/reference/be/shell#sh_binary.
sh_binary(
    name = "protoc",
    srcs = select({
        "//bazel/constraints:linux_x64": ["protoc_linux_x64.sh"],
        "//bazel/constraints:mac_x64": ["protoc_mac_x64.sh"],
    }),
    data = select({
        "//bazel/constraints:linux_x64": ["@protoc_linux_x64//:bin/protoc"],
        "//bazel/constraints:mac_x64": ["@protoc_mac_x64//:bin/protoc"],
    }) +
    # These Go binaries will be compiled for the correct execution platform.
    [
        "@com_github_skia_dev_protoc_gen_twirp_typescript//:protoc-gen-twirp_typescript",
        "@com_github_twitchtv_twirp//protoc-gen-twirp",
        "@org_golang_google_protobuf//cmd/protoc-gen-go",
    ],
    visibility = ["//visibility:public"],
)
