plugins {
  id("com.android.application")
  id("org.jetbrains.kotlin.android")
  // Required to run obfuscated instrumentation tests:
  // ./gradlew leakcanary-android-sample:connectedCheck -Pminify
  id("com.slack.keeper")
}

keeper {
  variantFilter {
    setIgnore(!project.hasProperty('minify'))
  }
}

dependencies {
  debugImplementation projects.leakcanaryAndroid
  // debugImplementation projects.leakcanaryAndroidStartup

  // Uncomment to use the :leakcanary process
  // debugImplementation projects.leakcanaryAndroidProcess
  releaseImplementation projects.leakcanaryAndroidRelease
  // Optional
  releaseImplementation projects.leakcanaryObjectWatcherAndroid

  implementation libs.kotlin.stdlib
  // Uncomment to use WorkManager
  // implementation libs.androidX.work.runtime

  testImplementation libs.junit
  testImplementation libs.robolectric

  androidTestImplementation projects.leakcanaryAndroidInstrumentation
  androidTestImplementation libs.androidX.test.espresso
  androidTestImplementation libs.androidX.test.rules
  androidTestImplementation libs.androidX.test.runner
  androidTestImplementation libs.androidX.test.junit
  androidTestImplementation libs.androidX.test.junitKtx
  androidTestUtil libs.androidX.test.orchestrator
}

android {
  compileSdk versions.compileSdk

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

  defaultConfig {
    applicationId "com.example.leakcanary"
    minSdk 16
    targetSdk versions.compileSdk

    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    // Run ./gradlew leakcanary-android-sample:connectedCheck -Porchestrator
    if (project.hasProperty('orchestrator')) {
      testInstrumentationRunnerArguments clearPackageData: 'true'
      testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'
      }
    }
  }

  buildTypes {
    // Build with ./gradlew leakcanary-android-sample:installDebug -Pminify
    if (project.hasProperty('minify')) {
      debug {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
      }
    } else {
      debug
    }
    release {
      signingConfig signingConfigs.debug
    }
  }

  dexOptions {
    dexInProcess false
  }

  lintOptions {
    disable 'GoogleAppIndexingWarning'
  }

  testOptions {
    unitTests {
      includeAndroidResources = true
    }
  }
}
