/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.2.1'
        classpath 'com.vanniktech:gradle-maven-publish-plugin:0.25.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$KOTLIN_VERSION"
    }
}

plugins {
    id 'de.undercouch.download' version '5.6.0'
    id 'com.github.ben-manes.versions' version '0.47.0'
}

ext.isSnapshot = { VERSION_NAME.endsWith('-SNAPSHOT') }
ext.isRelease = { ['publish', 'publishToMavenLocal'].any { gradle.startParameter.taskNames.contains(it) } }

subprojects {
    repositories {
        google()
        mavenLocal()
        mavenCentral()

        if (isSnapshot()) {
            maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
        }
    }

    // We don't build Javadoc at this time.
    tasks.withType(Javadoc).all {
        enabled = false
    }

    tasks.withType(com.android.build.gradle.tasks.JavaDocGenerationTask).all {
        enabled = false
    }
}

ext {
    minSdkVersion = 15
    targetSdkVersion = 34
    compileSdkVersion = 34
    buildToolsVersion = "33.0.2"
    ndkVersion = "25.1.8937393"
    javaTargetVersion = JavaVersion.VERSION_17
}

ext.deps = [
        // Kotlin support
        kotlinStdLibrary   : "org.jetbrains.kotlin:kotlin-stdlib:$KOTLIN_VERSION",
        kotlinCoroutinesAndroid : "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3",
        // Android support
        supportAnnotations : "androidx.annotation:annotation:$ANDROIDX_VERSION",
        supportAppCompat   : "androidx.appcompat:appcompat:$ANDROIDX_VERSION",
        supportCoreUi      : "androidx.legacy:legacy-support-core-ui:$ANDROIDX_VERSION",
        supportRecyclerView: "androidx.recyclerview:recyclerview:$ANDROIDX_VERSION",
        supportConstraintLayout: "androidx.constraintlayout:constraintlayout:2.1.4",
        supportSqlite      : "androidx.sqlite:sqlite-framework:2.2.0",
        supportEspresso    : 'androidx.test.espresso:espresso-core:3.5.1',
        supportEspressoIntents : 'androidx.test.espresso:espresso-intents:3.5.1',
        supportTestRunner  : 'androidx.test:runner:1.5.2',
        supportCoreKtx     : 'androidx.core:core-ktx:1.12.0',
        // Arch
        archPaging         : 'android.arch.paging:runtime:1.0.1',
        // First-party
        soloader           : "com.facebook.soloader:soloader:$SOLOADER_VERSION",
        fbjni              : "com.facebook.fbjni:fbjni:$FBJNI_VERSION",
        screenshot         : 'com.facebook.testing.screenshot:core:0.15.0',
        boltsTasks         : 'com.parse.bolts:bolts-tasks:1.4.0',
        curtains           : 'com.squareup.curtains:curtains:1.2.5',
        // Third-party
        websocket          : 'org.java-websocket:Java-WebSocket:1.5.4',
        openssl            : 'com.android.ndk.thirdparty:openssl:1.1.1l-beta-1',
        // Annotations
        kotlinxSerializationJson :  "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3",
        jsr305             : 'com.google.code.findbugs:jsr305:3.0.2',
        inferAnnotations   : 'com.facebook.infer.annotation:infer-annotation:0.18.0',
        proguardAnnotations: 'com.facebook.yoga:proguard-annotations:1.19.0',
        // Litho
        lithoAnnotations   : "com.facebook.litho:litho-annotations:$LITHO_VERSION",
        lithoCore          : "com.facebook.litho:litho-core:$LITHO_VERSION",
        lithoEditorCore    : "com.facebook.litho:litho-editor-core:$LITHO_VERSION",
        lithoEditorFlipper    : "com.facebook.litho:litho-editor-flipper:$LITHO_VERSION",
        lithoSectionsAnnotations: "com.facebook.litho:litho-sections-annotations:$LITHO_VERSION",
        lithoSectionsDebug : "com.facebook.litho:litho-sections-debug:$LITHO_VERSION",
        lithoSectionsCore  : "com.facebook.litho:litho-sections-core:$LITHO_VERSION",
        lithoSectionsWidget  : "com.facebook.litho:litho-sections-widget:$LITHO_VERSION",
        lithoWidget        : "com.facebook.litho:litho-widget:$LITHO_VERSION",
        lithoProcessor     : "com.facebook.litho:litho-processor:$LITHO_VERSION",
        lithoSectionsProcessor: "com.facebook.litho:litho-sections-processor:$LITHO_VERSION",
        lithoFresco        : "com.facebook.litho:litho-fresco:$LITHO_VERSION",
        lithoTesting       : "com.facebook.litho:litho-testing:$LITHO_VERSION",
        // Debugging and testing
        guava              : 'com.google.guava:guava:23.0',
        robolectric        : 'org.robolectric:robolectric:4.10.3',
        junit              : 'junit:junit:4.13.2',
        hamcrest           : 'org.hamcrest:hamcrest-library:2.2',
        mockito            : 'org.mockito:mockito-core:5.8.0',
        okhttp3            : 'com.squareup.okhttp3:okhttp:4.11.0',
        leakcanary         : 'com.squareup.leakcanary:leakcanary-android:1.6.3',
        leakcanary2        : 'com.squareup.leakcanary:leakcanary-android:2.8.1',
        protobuf           : 'com.google.protobuf:protobuf-java:3.25.3',
        testCore           : 'androidx.test:core:1.4.0',
        testRules          : 'androidx.test:rules:1.5.0',
        // Plugin dependencies
        flipperFrescoPlugin: "com.facebook.fresco:flipper-fresco-plugin:$FRESCO_VERSION",
        frescoFlipper      : "com.facebook.fresco:flipper:$FRESCO_VERSION",
        frescoStetho       : "com.facebook.fresco:stetho:$FRESCO_VERSION",
        fresco             : "com.facebook.fresco:fresco:$FRESCO_VERSION",
        frescoUiCommon     : "com.facebook.fresco:ui-common:$FRESCO_VERSION",
        frescoVito         : "com.facebook.fresco:vito:$FRESCO_VERSION",
        frescoVitoCore     : "com.facebook.fresco:vito-core:$FRESCO_VERSION",
        frescoVitoLitho    : "com.facebook.fresco:vito-litho:$FRESCO_VERSION",
]
