load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "nodejs_test")
load("@npm//react-scripts:index.bzl", "react_scripts", "react_scripts_test")

# Filename conventions described at
# https://create-react-app.dev/docs/running-tests#filename-conventions
_TESTS = [
    "src/**/*.test.js*",
    "src/**/*.test.ts*",
    "src/**/*.spec.js*",
    "src/**/*.spec.ts*",
    "src/**/__tests__/**/*.js*",
    "src/**/__tests__/**/*.ts*",
]

# We don't want to teach react-scripts to include from multiple directories
# So we copy everything it wants to read to the output "bin" directory
copy_to_bin(
    name = "copy_static_files",
    srcs = glob(
        [
            "public/*",
            "src/**/*",
        ],
        exclude = _TESTS,
    ) + [
        "package.json",
        "tsconfig.json",
    ],
)

# react-scripts can only work if the working directory is the root of the application.
# So we'll need to chdir before it runs.
write_file(
    name = "write_chdir_script",
    out = "chdir.js",
    content = ["process.chdir(__dirname)"],
)

_RUNTIME_DEPS = [
    "chdir.js",
    "copy_static_files",
    "@npm//react",
    "@npm//react-dom",
]

react_scripts(
    # Note: If you want to change the name make sure you update BUILD_PATH below accordingly
    # https://create-react-app.dev/docs/advanced-configuration/
    name = "build",
    args = [
        "--node_options=--require=./$(execpath chdir.js)",
        "build",
    ],
    data = _RUNTIME_DEPS + [
        "@npm//@types",
    ],
    env = {
        "BUILD_PATH": "./build",
    },
    output_dir = True,
)

nodejs_test(
    name = "build_smoke_test",
    data = [
        "build",
        "@npm//@bazel/runfiles",
    ],
    entry_point = "build_smoke_test.js",
)

copy_to_bin(
    name = "copy_test_files",
    srcs = glob(_TESTS),
)

react_scripts_test(
    name = "test",
    args = [
        "--node_options=--require=$(rootpath chdir.js)",
        "test",
        # ibazel is the watch mode for Bazel when running tests
        # Because Bazel is really a CI system that runs locally
        "--watchAll=false",
        "--no-cache",
        "--no-watchman",
        "--ci",
    ],
    data = _RUNTIME_DEPS + [
        "copy_test_files",
        "@npm//@testing-library/jest-dom",
        "@npm//@testing-library/react",
        "@npm//@testing-library/user-event",
    ],
    # Need to set the pwd to avoid jest needing a runfiles helper
    # Windows users with permissions can use --enable_runfiles
    # to make this test work
    tags = ["no-bazelci-windows"],
)

react_scripts(
    name = "start",
    args = [
        "--node_options=--require=$(rootpath chdir.js)",
        "start",
    ],
    data = _RUNTIME_DEPS,
    tags = [
        # This tag instructs ibazel to pipe into stdin a event describing actions.
        # ibazel send EOF to stdin by default and `react-scripts start` will stop when getting EOF in stdin.
        # So use this to prevent EOF.
        "ibazel_notify_changes",
    ],
)
