load("//tools/build_defs/docker:docker.bzl", "docker_build")
load("//tools/build_defs/pkg:pkg.bzl", "pkg_tar")

# This is totally non hermetic, we should really replace that by a
# docker_pull rule.
FLAVOURS = [f[f.find(".") + 1:] for f in glob(["Dockerfile.*"])]

[
    # This is totally non hermetic.
    genrule(
        name = "docker-" + flavour,
        srcs = ["Dockerfile." + flavour],
        outs = ["docker-%s.tar" % flavour],
        cmd = "\n".join([
            "DIR=\"$$(dirname $<)\"",
            "IMG=\"$$(basename $<)\"",
            "DOCKER=\"$${PWD}/$(location @docker//:docker)\"",
            "(",
            "   cd $$DIR",
            "   $$DOCKER build -f $$IMG -t bazel_tools_cpp_test:%s ." % flavour,
            ")",
            "$$DOCKER save bazel_tools_cpp_test:%s > $@" % flavour,
        ]),
        tags = ["local"],
        # Docker needs to knows how to contact the daemon from the environment.
        # @docker//:docker point to a docker wrapper that copy the environment
        # of the user.
        tools = ["@docker//:docker"],
    )
    for flavour in FLAVOURS
]

# Just to avoid re-reading docker images all the time
[
    docker_build(
        name = "base-" + flavour,
        base = "docker-" + flavour,
    )
    for flavour in FLAVOURS
]

pkg_tar(
    name = "bazel_cc_configure",
    package_dir = "/opt/workspace",
    strip_prefix = "/",
    deps = ["//:bazel-distfile-tar"],
)

[
    [docker_build(
        name = "bazel_cc_configure-%s-%s" % (flavour, mode),
        base = ":base-" + flavour,
        entrypoint = "/opt/workspace/compile.sh && ./output/bazel test ${EXTRA_BAZEL_ARGS} //examples/cpp:hello-success_test",
        env = {
            "EXTRA_BAZEL_ARGS": "--spawn_strategy=standalone --genrule_strategy=standalone -c %s" % mode,
        },
        tars = [":bazel_cc_configure"],
        workdir = "/opt/workspace",
    ) for mode in [
        "dbg",
        "opt",
        "fastbuild",
    ]]
    for flavour in FLAVOURS
]

[
    [py_test(
        name = "test_cc_configure-%s-%s" % (flavour, mode),
        size = "large",
        srcs = ["docker_test.py"],
        args = [
            "--main='$(location :bazel_cc_configure-%s-%s)'" % (flavour, mode),
            "--docker='../docker/docker'",
        ],
        data = [
            ":bazel_cc_configure-%s-%s" % (flavour, mode),
            "@docker//:docker",
        ],
        local = 1,
        main = "docker_test.py",
        tags = [
            "exclusive",
            "local",
        ],
        deps = ["//third_party/py/gflags"],
    ) for mode in [
        "dbg",
        "opt",
        "fastbuild",
    ]]
    for flavour in FLAVOURS
]

filegroup(
    name = "srcs",
    srcs = glob(["**"]),
    visibility = ["//tools/cpp:__pkg__"],
)
