load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@bazel_gazelle//:def.bzl", "gazelle")
load("@com_github_bazelbuild_buildtools//buildifier:def.bzl", "buildifier")
load("@io_bazel_rules_docker//container:container.bzl", "container_push")
load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit")

# Disable generation of go_proto_library targets. Let Gazelle use checked-in .pb.go files instead.
#
# We opt out of this feature for the following reasons:
#
# 1) Generated files are invisible to code editors and IDEs, which breaks features such as code
#    completion, automated refactors, etc. This can be fixed with editor plugins (see
#    https://github.com/bazelbuild/rules_go/issues/512), but none are available at this time.
#
# 2) Leveraging the preexisting, checked-in .pb.go is the fastest way to roll out Bazel as the build
#    system for our repository, and is the recommended approach for already established projects, or
#    for projects that also need to build with "go build". See
#    https://github.com/bazelbuild/rules_go/blob/master/proto/core.rst#option-2-use-pre-generated-pbgo-files.
#
# In the future, we might decide to leverage Gazelle's generation of go_proto_library rules. To
# address point 1) above, a potential approach is to check in any files generated via
# go_proto_library targets. This works because if there's a source file checked in the repository,
# and a build target that generates a file of the same name, Bazel will ignore the checked in file
# and use the generated file instead. To keep the checked in and generated files in sync, a rule
# such as generated_file_test can be used, as mentioned here:
# https://github.com/bazelbuild/rules_go/issues/512#issuecomment-747844469.
#
# Documentation for this directive: https://github.com/bazelbuild/bazel-gazelle#directives.
#
# gazelle:proto disable

# This directive tells Gazelle to use a custom macro instead of rules_go's go_test rule for any
# Gazelle-generated Go test targets.
#
# The custom macro generates separate go_test targets for manual Go tests, which will be tagged as
# manual. The macro relies on the assumption that any manual test cases will be placed on Go source
# files ending in "_manual_test.go". This convention is enforced by unittest.ManualTest(). If the
# test target does not contain any manual test, the custom macro behaves exactly like rules_go's
# go_test rule.
#
# See the macro's docstring for details.
#
# Documentation for this directive: https://github.com/bazelbuild/bazel-gazelle#directives.
#
# gazelle:map_kind go_test go_test //bazel/go:go_test.bzl

# gazelle:prefix go.skia.org/infra
gazelle(name = "gazelle")

exports_files(
    ["tsconfig.json"],
    visibility = ["//visibility:public"],
)

buildifier(
    name = "buildifier",
    exclude_patterns = ["./**/node_modules/*"],
    lint_mode = "warn",
)

############################################
# Custom Remote Build Execution toolchain. #
############################################

# Generates a custom toolchain container for Remote Build Execution which extends the default RBE
# ubuntu16-04 container with any extra dependencies needed for Skia Infrastructure build targets.
#
# This container can be pushed to GCR via the container_push target defined below.
#
# To debug this image:
#
#     # Build the container image.
#     $ bazel build //:rbe_container_skia_infra
#
#     # Load the container.
#     $ docker load -i bazel-bin/rbe_container_skia_infra_commit.tar
#     Loaded image: bazel/default:rbe_container_skia_infra
#
#     # Run the container.
#     $ docker run -it bazel/default:rbe_container_skia_infra /bin/bash
#
# Notes:
#
#  - This target is tagged with "no-remote" because the container_run_and_commit rule calls the
#    Docker binary, which requires the Docker daemon to be running. This fails on RBE with error
#    "Cannot connect to the Docker daemon at [...]. Is the docker daemon running?". By tagging this
#    target with "no-remote", we tell Bazel to build this target locally, even with --config=remote.
#
#  - The output of this rule is a >3GB .tar with the container image, so this target can take
#    several minutes to build. This is OK because we only need to rebuild this container very
#    occasionally, and Bazel will cache the output artifact.
#
# Reference:
# https://cloud.google.com/remote-build-execution/docs/create-custom-toolchain#creating_a_custom_toolchain_container
container_run_and_commit(
    name = "rbe_container_skia_infra",
    commands = [
        # The add-apt-repository command does not work without fixing the python3 symlink first.
        "rm /usr/bin/python3",
        "ln -s /usr/bin/python3.5 /usr/bin/python3",

        # Install the add-apt-repository command, and other packages needed to fetch repositories.
        "apt-get update",
        "apt-get install -y software-properties-common apt-transport-https ca-certificates gnupg",

        # Add the Chrome repository.
        "curl -fsSL https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -",
        "add-apt-repository 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main'",
        "apt-get update",

        # Install Chrome and fonts to support major charsets.
        #
        # This is necessary for the karma_test rule to work, which runs web tests on a headless
        # Chrome, and also for the bundled version of Chromium that Puppeteer installs to
        # render fonts properly.
        #
        # Adapted from:
        # https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker
        "apt-get install -y " + " ".join([
            "google-chrome-stable",
            "fonts-ipafont-gothic",
            "fonts-wqy-zenhei",
            "fonts-thai-tlwg",
            "fonts-kacst",
            "fonts-freefont-ttf",
            # Prevent "error while loading shared libraries: libXss.so.1" in Puppeteer tests.
            # See https://github.com/puppeteer/puppeteer/issues/6192.
            "libxss1",
        ]),

        # Add the Google Cloud SDK repository as per the instructions here:
        # https://cloud.google.com/sdk/docs/install#deb.
        "echo 'deb [signed-by=/usr/share/keyrings/cloud.google.gpg] " +
        "      https://packages.cloud.google.com/apt cloud-sdk main'" +
        " | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list",
        "curl https://packages.cloud.google.com/apt/doc/apt-key.gpg" +
        " | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -",
        "apt-get update",

        # Install the Google Cloud SDK and emulators.
        "apt-get install -y " + " ".join([
            "google-cloud-sdk",
            "google-cloud-sdk-bigtable-emulator",
            "google-cloud-sdk-datastore-emulator",
            "google-cloud-sdk-firestore-emulator",
            "google-cloud-sdk-pubsub-emulator",
        ]),

        # Install CockroachDB as per the instructions here:
        # https://www.cockroachlabs.com/docs/v20.2/install-cockroachdb-linux.
        "wget -qO- https://binaries.cockroachdb.com/cockroach-v20.2.4.linux-amd64.tgz | tar xvz",
        "cp -i cockroach-v20.2.4.linux-amd64/cockroach /usr/local/bin/",

        # Install depot_tools, necessary to pull binaries via CIPD.
        "git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git /depot_tools",

        # Remove the Git distribution included in the base image. We'll install our own from CIPD.
        # The Git CLI is invoked from some tests.
        "apt-get remove git -y",

        # Initialize the CIPD root directory.
        "mkdir /cipd",
        "/depot_tools/cipd init /cipd -force",

        # Install CIPD packages needed by various tests. These should be kept in sync with
        # //cipd.ensure.
        "/depot_tools/cipd install infra/3pp/tools/git/linux-amd64 version:2.29.2.chromium.6 " +
        "    -root /cipd",
        "/depot_tools/cipd install infra/tools/luci/isolate/linux-amd64 " +
        "    git_revision:14be8b751c0fb567535f520f8a7bc60c3f40b378 -root /cipd",
        "/depot_tools/cipd install infra/tools/luci/isolated/linux-amd64 " +
        "    git_revision:14be8b751c0fb567535f520f8a7bc60c3f40b378 -root /cipd",

        # Include the CIPD-installed binaries in the PATH. Note that this does not persist after
        # the container is created. Said binaries are included in the PATH during testing via a
        # --test_env flag defined in //.bazelrc.
        "export PATH=$PATH:/cipd:/cipd/bin",

        # Create a default Git user. This is necessary for some Git tests to pass.
        "mkdir /cipd/etc",  # The below commands fail unless this directory exists.
        "git config --system user.name 'Bazel RBE Test User'",
        "git config --system user.email 'bazel-rbe-test-user@example.com'",
    ],
    image = "@rbe_ubuntu1604//image",
    tags = ["no-remote"],
)

# This target can be used to upload the custom RBE container toolchain to GCR. It will be available
# as gcr.io/skia-public/rbe-container-skia-infra.
#
# Note: this can take several minutes to finish because it will upload a >3GB .tar file to GCR.
container_push(
    name = "push_rbe_container_skia_infra",
    format = "Docker",
    image = ":rbe_container_skia_infra_commit.tar",  # Generated by :rbe_container_skia_infra.
    registry = "gcr.io",
    repository = "skia-public/rbe-container-skia-infra",
    tag = "{STABLE_DOCKER_TAG}",
)

####################################################################################################
# Support for "~"-prefixed Sass imports of elements-sk styles, e.g.:                               #
#                                                                                                  #
#   @import '~elements-sk/themes/themes';                                                          #
#                                                                                                  #
# This hack is necessary to maintain compatibility with the Webpack build, which uses the          #
# css-loader plugin to inline CSS imports. Said plugin adds all NPM packages to the Sass compiler  #
# import path with the "~" prefix. See https://webpack.js.org/loaders/css-loader/#import for more. #
####################################################################################################

ELEMENTS_SK_SCSS = [
    # To regenerate this list, please run the following Bash command:
    #
    #   $ find infra-sk/node_modules/elements-sk -name "*.scss" \
    #       | sed -E "s/infra-sk\//\/\/infra-sk:/" | sort
    "//infra-sk:node_modules/elements-sk/checkbox-sk/checkbox-sk.scss",
    "//infra-sk:node_modules/elements-sk/collapse-sk/collapse-sk.scss",
    "//infra-sk:node_modules/elements-sk/colors.scss",
    "//infra-sk:node_modules/elements-sk/icon/icon-sk.scss",
    "//infra-sk:node_modules/elements-sk/multi-select-sk/multi-select-sk.scss",
    "//infra-sk:node_modules/elements-sk/nav-links-sk/nav-links-sk.scss",
    "//infra-sk:node_modules/elements-sk/radio-sk/radio-sk.scss",
    "//infra-sk:node_modules/elements-sk/select-sk/select-sk.scss",
    "//infra-sk:node_modules/elements-sk/spinner-sk/spinner-sk.scss",
    "//infra-sk:node_modules/elements-sk/styles/buttons/buttons.scss",
    "//infra-sk:node_modules/elements-sk/styles/select/select.scss",
    "//infra-sk:node_modules/elements-sk/styles/table/table.scss",
    "//infra-sk:node_modules/elements-sk/tabs-panel-sk/tabs-panel-sk.scss",
    "//infra-sk:node_modules/elements-sk/tabs-sk/tabs-sk.scss",
    "//infra-sk:node_modules/elements-sk/themes/color-palette.scss",
    "//infra-sk:node_modules/elements-sk/themes/themes.scss",
    "//infra-sk:node_modules/elements-sk/toast-sk/toast-sk.scss",
]

TILDE_ELEMENTS_SK_SCSS = [f.replace("//infra-sk:node_modules/", "~") for f in ELEMENTS_SK_SCSS]

# Recursively copies all *.scss files from //infra-sk/node_modules/elements-sk to //~elements-sk.
genrule(
    name = "~elements-sk_generator",
    srcs = ELEMENTS_SK_SCSS,
    outs = TILDE_ELEMENTS_SK_SCSS,
    cmd =
        "for FILENAME in $(SRCS); do " +
        "  TILDE_FILENAME=`echo $$FILENAME | sed -E 's/infra-sk\\/node_modules\\/(.*)/~\\1/'`; " +
        "  TILDE_DIR=$$(dirname $$TILDE_FILENAME); " +
        "  mkdir -p $(RULEDIR)/$$TILDE_DIR; " +
        "  cp $$FILENAME $(RULEDIR)/$$TILDE_FILENAME; " +
        "done",
)

# Do not use directly. Use //infra-sk:elements-sk_scss instead, which includes these files as well.
filegroup(
    name = "~elements-sk",
    srcs = TILDE_ELEMENTS_SK_SCSS,
    visibility = ["//infra-sk:__pkg__"],
)

go_library(
    name = "infra_lib",
    srcs = ["run_unittests.go"],
    importpath = "go.skia.org/infra",
    visibility = ["//visibility:private"],
    deps = [
        "//go/common",
        "//go/git",
        "//go/skerr",
        "//go/sklog",
        "//go/testutils/unittest",
        "//go/timer",
        "//go/util",
    ],
)

go_binary(
    name = "infra",
    embed = [":infra_lib"],
    visibility = ["//visibility:public"],
)
