"""Repository rule for Android SKD and NDK autoconfigure"""

load("@build_bazel_rules_android//android:rules.bzl", "android_sdk_repository")
load("@rules_android_ndk//:rules.bzl", "android_ndk_repository")

_ANDROID_SDK_HOME = "ANDROID_HOME"
_ANDROID_NDK_HOME = "ANDROID_NDK_HOME"

_ANDROID_REPOS_TEMPLATE = """android_sdk_repository(
        name="androidsdk",
        path={sdk_home},
    )
    android_ndk_repository(
        name="androidndk",
        path={ndk_home},
    )
"""

def _is_windows(repository_ctx):
    """Returns true if the current platform is Windows"""
    return repository_ctx.os.name.lower().startswith("windows")

def _supports_android(repository_ctx):
    sdk_home = repository_ctx.os.environ.get(_ANDROID_SDK_HOME)
    ndk_home = repository_ctx.os.environ.get(_ANDROID_NDK_HOME)
    return sdk_home and ndk_home and not _is_windows(repository_ctx)

def _android_autoconf_impl(repository_ctx):
    """Implementation of the android_autoconf repo rule"""
    sdk_home = repository_ctx.os.environ.get(_ANDROID_SDK_HOME)
    ndk_home = repository_ctx.os.environ.get(_ANDROID_NDK_HOME)

    # rules_android_ndk does not support Windows yet.
    if _supports_android(repository_ctx):
        repos = _ANDROID_REPOS_TEMPLATE.format(
            sdk_home = repr(sdk_home),
            ndk_home = repr(ndk_home),
        )
    else:
        repos = "pass"

    repository_ctx.file("BUILD.bazel", "")
    repository_ctx.file("android_configure.bzl", """
load("@build_bazel_rules_android//android:rules.bzl", "android_sdk_repository")
load("@rules_android_ndk//:rules.bzl", "android_ndk_repository")

def android_workspace():
    {repos}
    """.format(repos = repos))

android_configure = repository_rule(
    implementation = _android_autoconf_impl,
    environ = [
        _ANDROID_SDK_HOME,
        _ANDROID_NDK_HOME,
    ],
)
