# This package contains an external repository that the Android rules
# depend on at runtime. This is an interim solution to extract dependencies
# out from the Bazel binary to minimize its size. The final goal is to
# extract all Android rules and tools out of Bazel and into rules_android
# and tools_android.

load("@rules_pkg//pkg:tar.bzl", "pkg_tar")
load("//tools/android:android_genrule.bzl", "android_genrule")

filegroup(
    name = "srcs",
    srcs = [
        "BUILD.android_tools",
        "BUILD.bazel",
        "WORKSPACE.android_tools",
    ],
    visibility = [
        "//tools/android:__pkg__",
    ],
)

# :android_tools creates a tarball containing the outputs of this genrule.
genrule(
    name = "strip_android_tools_suffix",
    srcs = [
        "BUILD.android_tools",
        "WORKSPACE.android_tools",
    ],
    outs = [
        "BUILD",
        "WORKSPACE",
    ],
    cmd = """
    cp $(location BUILD.android_tools) $(location BUILD) && \
    cp $(location WORKSPACE.android_tools) $(location WORKSPACE)
    """,
    tags = [
        "manual",
        "no_windows",
    ],
)

genrule(
    name = "gen_version_txt",
    outs = ["version.txt"],
    cmd = """
embed_label="$$(grep BUILD_EMBED_LABEL bazel-out/stable-status.txt | cut -d ' ' -f 2-)"
if [[ -z "$$embed_label" ]]; then
  # this happens when building for tests
  version="not_set"
  bazel_version="not_set"
  bazel_repo_commit="not_set"
elif [[ "$$embed_label" =~ ^[0-9]+[.][0-9]+[.][0-9]+\\ [0-9]+[.][0-9]+[.][0-9]+(-pre[.][0-9]{8}[.][0-9]+)?\\ [0-9a-f]{40}$$ ]]; then
  version="$$(echo $$embed_label | cut -d ' ' -f 1)"
  bazel_version="$$(echo $$embed_label | cut -d ' ' -f 2)"
  bazel_repo_commit="$$(echo $$embed_label | cut -d ' ' -f 3)"
else
  echo "bad format for --embed_label"
  exit 1
fi

cat > $@ << EOF
bazel_android_tools_version $$version
bazel_repo_commit $$bazel_repo_commit
built_with_bazel_version $$bazel_version
EOF
""",
    stamp = True,
)

# Needs to switch to dependencies to an android config.
android_genrule(
    name = "desugar_jdk_libs",
    srcs = ["@desugar_jdk_libs"],
    out = "desugar_jdk_libs.jar",
    cmd = "cp $< $@",
    platform = "//tools/android:arm64-v8a",
)

pkg_tar(
    name = "android_tools",
    srcs = [
        "BUILD",
        "WORKSPACE",
        ":desugar_jdk_libs.jar",
        ":version.txt",
        "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker_deploy.jar",
        "//src/tools/android/java/com/google/devtools/build/android:all_android_tools_deploy.jar",
    ],
    remap_paths = {
        "src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker_deploy.jar": "ImportDepsChecker_deploy.jar",
        "src/tools/android/java/com/google/devtools/build/android:all_android_tools_deploy.jar": "all_android_tools_deploy.jar",
    },
    visibility = ["//src/test/shell/bazel:__subpackages__"],
)
