# This is a convenience wrapper to run a platform-specific version of GN with any provided flags
# from the directory where the user ran Bazel. Without this, users would need to specify the
# exact flavor of GN needed and use --run_under to change directories before running GN.
#
# For example:
#   bazelisk //bazel/external/gn -- format gn/sksl.gni
# is the same as
#   gn format gn/sksl.gni
# except it uses a hermetic version of gn instead of whatever is on the user's machine. Note the --
# to pass arguments to gn and not have Bazel try to understand them.
py_binary(
    name = "gn",
    srcs = [":gn.py"],
    data = [":gn_exe"],
    # We can compile remotely, but because we are running the executable to modify files in
    # the source tree, running it in a remote, sandboxed would have no effect locally.
    tags = ["no-remote"],
)

_GN = """
import os
import subprocess
import sys

# execpath returns the path to the given label from the exec path.
# https://bazel.build/reference/be/make-variables#predefined_label_variables
# We need to get the absolute path here because we want to run gn from the
# location where the user invoked Bazel.
gn_exe = os.path.abspath("$(execpath :gn_exe)")

# https://bazel.build/docs/user-manual#running-executables
# Note: Bazel eats single quotes, so we must use double quotes.
os.chdir(os.environ["BUILD_WORKING_DIRECTORY"]) # path where user ran Bazel

# Pass any other args along to GN, and stream any output to the user.
result = subprocess.run([gn_exe] + sys.argv[1:], encoding="utf-8")
sys.exit(result.returncode)
"""

genrule(
    name = "create_gn_script",
    outs = ["gn.py"],
    cmd = "echo '%s' > $@" % _GN,
    exec_tools = [
        ":gn_exe",
    ],
)

filegroup(
    name = "gn_exe",
    srcs = select({
        "//bazel/common_config_settings:linux_x64": ["@gn_linux_amd64//:gn"],
        "//bazel/common_config_settings:mac_arm64": ["@gn_mac_arm64//:gn"],
        "//bazel/common_config_settings:mac_x64": ["@gn_mac_amd64//:gn"],
    }),
)
