load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_kotlin",
    sha256 = "34e8c0351764b71d78f76c8746e98063979ce08dcf1a91666f3f3bc2949a533d",
    url = "https://github.com/bazel-contrib/rules_kotlin/releases/download/v1.9.5/rules_kotlin-v1.9.5.tar.gz",
)

load("@rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "versions")

http_archive(
    name = "rules_jvm_external",
    sha256 = versions.RULES_JVM_EXTERNAL.sha256,
    strip_prefix = "rules_jvm_external-%s" % versions.RULES_JVM_EXTERNAL.version,
    urls = [url.format(version = versions.RULES_JVM_EXTERNAL.version) for url in versions.RULES_JVM_EXTERNAL.url_templates],
)

http_archive(
    name = "rules_android",
    sha256 = versions.RULES_ANDROID.sha256,
    strip_prefix = versions.RULES_ANDROID.strip_prefix_template.format(version = versions.RULES_ANDROID.version),
    urls = [url.format(version = versions.RULES_ANDROID.version) for url in versions.RULES_ANDROID.url_templates],
)

http_archive(
    name = "bazel_skylib",
    sha256 = versions.BAZEL_SKYLIB.sha256,
    urls = [url.format(version = versions.BAZEL_SKYLIB.version) for url in versions.BAZEL_SKYLIB.url_templates],
)

http_archive(
    name = "bazel_features",
    sha256 = versions.BAZEL_FEATURES.sha256,
    strip_prefix = versions.BAZEL_FEATURES.strip_prefix_template.format(version = versions.BAZEL_FEATURES.version),
    urls = [url.format(version = versions.BAZEL_FEATURES.version) for url in versions.BAZEL_FEATURES.url_templates],
)

load("@bazel_features//:deps.bzl", "bazel_features_deps")

bazel_features_deps()

http_archive(
    name = "bazel_lib",
    sha256 = versions.BAZEL_LIB.sha256,
    strip_prefix = versions.BAZEL_LIB.strip_prefix_template.format(version = versions.BAZEL_LIB.version),
    urls = [url.format(version = versions.BAZEL_LIB.version) for url in versions.BAZEL_LIB.url_templates],
)

http_archive(
    name = "rules_cc",
    sha256 = versions.RULES_CC.sha256,
    strip_prefix = versions.RULES_CC.strip_prefix_template.format(version = versions.RULES_CC.version),
    urls = [url.format(version = versions.RULES_CC.version) for url in versions.RULES_CC.url_templates],
)

load("@rules_cc//cc:repositories.bzl", "rules_cc_dependencies", "rules_cc_toolchains")

rules_cc_dependencies()

rules_cc_toolchains()

http_archive(
    name = "rules_java",
    sha256 = versions.RULES_JAVA.sha256,
    urls = [url.format(version = versions.RULES_JAVA.version) for url in versions.RULES_JAVA.url_templates],
)

# Android rules dependencies
load("@rules_android//:prereqs.bzl", "rules_android_prereqs")

rules_android_prereqs()

##### rules_java setup for rules_android #####
load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")

rules_java_dependencies()

# note that the following line is what is minimally required from protobuf for the java rules
# consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl
load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features")  # buildifier: disable=bzl-visibility

proto_bazel_features(name = "proto_bazel_features")

# register toolchains
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")

rules_java_toolchains()

##### rules_jvm_external setup for rules_android #####
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")

rules_jvm_external_deps()

load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")

rules_jvm_external_setup()

##### rules_android setup #####
load("@rules_android//:defs.bzl", "rules_android_workspace")

rules_android_workspace()

# Android SDK setup
load("@rules_android//rules:rules.bzl", "android_sdk_repository")

android_sdk_repository(name = "androidsdk")

register_toolchains(
    "@rules_android//toolchains/android:android_default_toolchain",
    "@rules_android//toolchains/android_sdk:android_sdk_tools",
)

kotlin_repositories()

load("@rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")

kt_register_toolchains()

load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
    name = "maven_rules_kotlin_example",
    aar_import_bzl_label = "@rules_android//rules:rules.bzl",
    artifacts = [
        "com.google.dagger:dagger:2.50",
        "com.google.dagger:dagger-compiler:2.50",
        "com.google.dagger:dagger-producers:2.50",
        "com.squareup.anvil:compiler:2.4.9",
        "com.squareup.anvil:annotations:2.4.9",
        "androidx.activity:activity:1.0.0",
        "androidx.annotation:annotation:1.1.0",
        "androidx.appcompat:appcompat-resources:1.1.0",
        "androidx.appcompat:appcompat:1.1.0",
        "androidx.arch.core:core-common:2.1.0",
        "androidx.arch.core:core-runtime:2.0.0",
        "androidx.cardview:cardview:1.0.0",
        "androidx.collection:collection:1.1.0",
        "androidx.coordinatorlayout:coordinatorlayout:1.1.0",
        "androidx.core:core-ktx:1.3.0",
        "androidx.core:core:1.3.0",
        "androidx.cursoradapter:cursoradapter:1.0.0",
        "androidx.customview:customview:1.0.0",
        "androidx.drawerlayout:drawerlayout:1.0.0",
        "androidx.fragment:fragment:1.1.0",
        "androidx.interpolator:interpolator:1.0.0",
        "androidx.lifecycle:lifecycle-common:2.1.0",
        "androidx.lifecycle:lifecycle-livedata-core:2.0.0",
        "androidx.lifecycle:lifecycle-livedata:2.0.0",
        "androidx.lifecycle:lifecycle-runtime:2.1.0",
        "androidx.lifecycle:lifecycle-viewmodel:2.1.0",
        "androidx.loader:loader:1.0.0",
        "androidx.recyclerview:recyclerview:1.1.0",
        "androidx.savedstate:savedstate:1.0.0",
        "androidx.transition:transition:1.2.0",
        "androidx.vectordrawable:vectordrawable-animated:1.1.0",
        "androidx.vectordrawable:vectordrawable:1.1.0",
        "androidx.versionedparcelable:versionedparcelable:1.1.0",
        "androidx.viewpager2:viewpager2:1.0.0",
        "androidx.viewpager:viewpager:1.0.0",
        "com.google.android.material:material:1.1.0",
        "javax.inject:javax.inject:1",
        "junit:junit:4.13",
        "org.jetbrains.kotlin:kotlin-test:1.5.10",
        "com.google.truth:truth:1.0.1",
        "org.jetbrains:annotations:13.0",
    ],
    excluded_artifacts = [
        "org.jetbrains.kotlin:kotlin-stdlib",
        "org.jetbrains.kotlin:kotlin-stdlib-jdk8",
        "org.jetbrains.kotlin:kotlin-stdlib-jdk7",
        "org.jetbrains.kotlin:kotlin-compiler-embeddable",
        "org.jetbrains.kotlin:kotlin-reflect",
        "org.jetbrains.kotlin:kotlin-script-runtime",
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
    use_starlark_android_rules = True,
)
