Skip to content

Commit

Permalink
Add the Dependency Analysis Android Gradle Plugin (#169)
Browse files Browse the repository at this point in the history
* add the Dependency Analysis Plugin and apply its suggestions

* merge in the Detekt update

* restore the :dispatch:core dependency in :dispatch-android-viewmodel
  • Loading branch information
RBusarow committed Oct 4, 2020
1 parent 9c6f009 commit 46ce1bd
Show file tree
Hide file tree
Showing 31 changed files with 156 additions and 119 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,8 +361,8 @@ dependencies {
*/

// core coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9")

// everything provides :core via "api", so you only need this if you have no other "implementation" dispatch artifacts
implementation("com.rickbusarow.dispatch:dispatch-core:1.0.0-beta04")
Expand All @@ -386,7 +386,7 @@ dependencies {
*/

// core coroutines-test
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.3.8")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.3.9")

// you only need this if you don't have the -junit4 or -junit5 artifacts
testImplementation("com.rickbusarow.dispatch:dispatch-test:1.0.0-beta04")
Expand Down
11 changes: 11 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ buildscript {
maven("https://dl.bintray.com/kotlin/kotlinx")
}
dependencies {

classpath(BuildPlugins.androidGradlePlugin)
classpath(BuildPlugins.atomicFu)
classpath(BuildPlugins.benManesVersions)
Expand All @@ -45,6 +46,7 @@ buildscript {
}

plugins {
id(Plugins.dependencyAnalysis) version Versions.dependencyAnalysis
id("io.gitlab.arturbosch.detekt") version Libs.Detekt.version
}

Expand Down Expand Up @@ -272,6 +274,7 @@ detekt {
}

dependencies {

detekt(Libs.Detekt.cli)
detektPlugins(project(path = ":dispatch-detekt"))
}
Expand Down Expand Up @@ -381,3 +384,11 @@ subprojects {
}
}
}

dependencyAnalysis {
issues {
all {
ignoreKtx(false) // default is false
}
}
}
18 changes: 15 additions & 3 deletions buildSrc/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ object Plugins {
const val atomicFu = "kotlinx-atomicfu"
const val binaryCompatilibity = "binary-compatibility-validator"

const val dependencyAnalysis = "com.autonomousapps.dependency-analysis"

const val dokka = "org.jetbrains.dokka"
const val knit = "kotlinx-knit"

Expand All @@ -36,6 +38,7 @@ object Plugins {
object Versions {
const val ktlint = "0.35.0"
const val dokka = "0.10.1"
const val dependencyAnalysis = "0.59.0"
const val knit = "0.1.4"

const val compileSdk = 29
Expand Down Expand Up @@ -96,9 +99,12 @@ object Libs {

const val common = "androidx.lifecycle:lifecycle-common:$version"
const val extensions = "androidx.lifecycle:lifecycle-extensions:$version"
const val liveData = "androidx.lifecycle:lifecycle-livedata-ktx:$version"
const val runtime = "androidx.lifecycle:lifecycle-runtime-ktx:$version"
const val viewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:$version"
const val liveData = "androidx.lifecycle:lifecycle-livedata-core:$version"
const val liveDataKtx = "androidx.lifecycle:lifecycle-livedata-ktx:$version"
const val runtime = "androidx.lifecycle:lifecycle-runtime:$version"
const val runtimeKtx = "androidx.lifecycle:lifecycle-runtime-ktx:$version"
const val viewModel = "androidx.lifecycle:lifecycle-viewmodel:$version"
const val viewModelKtx = "androidx.lifecycle:lifecycle-viewmodel-ktx:$version"
}

object Test {
Expand All @@ -121,6 +127,7 @@ object Libs {

const val contrib = "androidx.test.espresso:espresso-contrib:$version"
const val core = "androidx.test.espresso:espresso-core:$version"
const val idlingResource = "androidx.test.espresso:espresso-idling-resource:$version"
const val intents = "androidx.test.espresso:espresso-intents:$version"
const val web = "androidx.test.espresso:espresso-web:$version"
}
Expand Down Expand Up @@ -167,23 +174,28 @@ object Libs {
object Kotest {
private const val version = "4.2.5"
const val assertions = "io.kotest:kotest-assertions-core-jvm:$version"
const val assertionsShared = "io.kotest:kotest-assertions-shared-jvm:$version"
const val commonJvm = "io.kotest:kotest-common-jvm:$version"
const val properties = "io.kotest:kotest-property-jvm:$version"
const val runner = "io.kotest:kotest-runner-junit5-jvm:$version"
}

object Kotlin {
const val compiler = "org.jetbrains.kotlin:kotlin-compiler-embeddable:${Versions.kotlin}"
const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlin}"
const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
const val extensions = "org.jetbrains.kotlin:kotlin-android-extensions:${Versions.kotlin}"
const val test = "org.jetbrains.kotlin:kotlin-test:${Versions.kotlin}"
const val testCommon = "org.jetbrains.kotlin:kotlin-test-common:${Versions.kotlin}"
}

object Kotlinx {

object Coroutines {
private const val version = "1.3.9"
const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version"
const val coreJvm = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:$version"
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version"
const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:$version"
}
Expand Down
4 changes: 2 additions & 2 deletions dispatch-android-espresso/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ repositories {
dependencies {

// core
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9")
implementation("com.rickbusarow.dispatch:dispatch-core:1.0.0-beta04")

androidTestImplementation("com.rickbusarow.dispatch:dispatch-android-espresso:1.0.0-beta04")
Expand Down
13 changes: 6 additions & 7 deletions dispatch-android-espresso/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
plugins {
id(Plugins.androidLibrary)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
id(Plugins.mavenPublish)
id(Plugins.dokka)
}
Expand All @@ -42,15 +41,15 @@ android {

dependencies {

implementation(Libs.AndroidX.Test.Espresso.core)
implementation(Libs.AndroidX.Test.runner)
api(Libs.AndroidX.Test.Espresso.idlingResource)
api(Libs.JUnit.jUnit4)
api(Libs.Kotlinx.Coroutines.core)

api(project(":dispatch-core"))

implementation(Libs.Kotlin.stdlib)
implementation(Libs.Kotlinx.Coroutines.android)
implementation(Libs.Kotlinx.Coroutines.core)

implementation(project(":dispatch-core"))

testImplementation(Libs.JUnit.jUnit4)
testImplementation(Libs.Kotest.assertions)
testImplementation(Libs.Kotest.runner)
testImplementation(Libs.MockK.core)
Expand Down
11 changes: 5 additions & 6 deletions dispatch-android-espresso/samples/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
plugins {
id(Plugins.androidLibrary)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
}

android {
Expand All @@ -41,12 +40,8 @@ android {
dependencies {

implementation(Libs.Kotlin.stdlib)
implementation(Libs.Kotlinx.Coroutines.core)
implementation(Libs.Kotlinx.Coroutines.coreJvm)

implementation(project(":dispatch-android-espresso"))
implementation(project(":dispatch-android-lifecycle"))
implementation(project(":dispatch-android-lifecycle-extensions"))
implementation(project(":dispatch-android-viewmodel"))
implementation(project(":dispatch-core"))

testImplementation(Libs.AndroidX.Test.Espresso.core)
Expand All @@ -57,9 +52,13 @@ dependencies {
testImplementation(Libs.Kotest.runner)
testImplementation(Libs.Kotlin.test)
testImplementation(Libs.Kotlin.testCommon)
testImplementation(Libs.Kotlinx.Coroutines.core)
testImplementation(Libs.Kotlinx.Coroutines.test)
testImplementation(Libs.Robolectric.core)

testImplementation(project(":dispatch-android-espresso"))
testImplementation(project(":dispatch-android-lifecycle-extensions"))
testImplementation(project(":dispatch-android-viewmodel"))
testImplementation(project(":dispatch-internal-test"))

}
12 changes: 7 additions & 5 deletions dispatch-android-lifecycle-extensions/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
plugins {
id(Plugins.androidLibrary)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
id(Plugins.mavenPublish)
id(Plugins.dokka)
}
Expand Down Expand Up @@ -45,14 +44,17 @@ android {

dependencies {

api(Libs.AndroidX.Fragment.core)
api(Libs.AndroidX.Lifecycle.common)
api(Libs.Kotlinx.Coroutines.core)
api(Libs.Kotlinx.Coroutines.coreJvm)

api(project(":dispatch-android-lifecycle"))
api(project(":dispatch-core"))

implementation(Libs.AndroidX.Fragment.core)
implementation(Libs.AndroidX.Lifecycle.common)
implementation(Libs.Kotlin.stdlib)
implementation(Libs.Kotlinx.Coroutines.android)
implementation(Libs.Kotlinx.Coroutines.core)

implementation(project(":dispatch-core"))

testImplementation(Libs.AndroidX.Lifecycle.runtime)
testImplementation(Libs.AndroidX.Test.Arch.core)
Expand Down
10 changes: 4 additions & 6 deletions dispatch-android-lifecycle-extensions/samples/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
plugins {
id(Plugins.androidLibrary)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
}

android {
Expand All @@ -40,19 +39,16 @@ android {

dependencies {

implementation(Libs.AndroidX.Fragment.ktx)
implementation(Libs.AndroidX.Fragment.core)
implementation(Libs.AndroidX.Lifecycle.common)
implementation(Libs.AndroidX.Lifecycle.liveData)
implementation(Libs.JUnit.jUnit4)
implementation(Libs.Kotlin.stdlib)
implementation(Libs.Kotlinx.Coroutines.core)

implementation(project(":dispatch-android-espresso"))
implementation(project(":dispatch-android-lifecycle"))
implementation(project(":dispatch-android-lifecycle-extensions"))
implementation(project(":dispatch-core"))
implementation(project(":dispatch-internal-test-android"))
implementation(project(":dispatch-test"))
implementation(project(":dispatch-test-junit5"))

testImplementation(Libs.AndroidX.Lifecycle.runtime)
testImplementation(Libs.AndroidX.Test.Arch.core)
Expand All @@ -67,4 +63,6 @@ dependencies {
testImplementation(Libs.Kotlinx.Coroutines.test)
testImplementation(Libs.Robolectric.core)

testImplementation(project(":dispatch-internal-test-android"))

}
4 changes: 2 additions & 2 deletions dispatch-android-lifecycle/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ repositories {

dependencies {

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9")
implementation("com.rickbusarow.dispatch:dispatch-android-lifecycle:1.0.0-beta04")
implementation("androidx.lifecycle:lifecycle-common:2.2.0")
}
Expand Down
9 changes: 6 additions & 3 deletions dispatch-android-lifecycle/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
plugins {
id(Plugins.androidLibrary)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
id(Plugins.mavenPublish)
id(Plugins.dokka)
}
Expand Down Expand Up @@ -45,14 +44,18 @@ android {

dependencies {

api(Libs.AndroidX.Lifecycle.common)
api(Libs.Kotlinx.Coroutines.core)
api(Libs.Kotlinx.Coroutines.coreJvm)

api(project(":dispatch-core"))

implementation(Libs.AndroidX.Fragment.core)
implementation(Libs.AndroidX.Lifecycle.common)
implementation(Libs.AndroidX.Lifecycle.liveData)
implementation(Libs.AndroidX.Lifecycle.liveDataKtx)
implementation(Libs.AndroidX.Lifecycle.runtime)
implementation(Libs.Kotlin.stdlib)
implementation(Libs.Kotlinx.Coroutines.android)
implementation(Libs.Kotlinx.Coroutines.core)

testImplementation(Libs.AndroidX.Lifecycle.runtime)
testImplementation(Libs.AndroidX.Test.Arch.core)
Expand Down
17 changes: 9 additions & 8 deletions dispatch-android-lifecycle/samples/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
plugins {
id(Plugins.androidLibrary)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
}

android {
Expand All @@ -40,22 +39,19 @@ android {

dependencies {

implementation(Libs.AndroidX.Fragment.core)
implementation(Libs.AndroidX.Fragment.ktx)
implementation(Libs.AndroidX.Lifecycle.common)
implementation(Libs.AndroidX.Lifecycle.extensions)
implementation(Libs.AndroidX.Lifecycle.liveData)
implementation(Libs.AndroidX.Lifecycle.viewModel)
implementation(Libs.JUnit.jUnit4)
implementation(Libs.JUnit.jUnit5Api)
implementation(Libs.Kotlin.stdlib)
implementation(Libs.Kotlinx.Coroutines.core)

implementation(project(":dispatch-android-espresso"))
implementation(project(":dispatch-android-lifecycle"))
implementation(project(":dispatch-android-lifecycle-extensions"))
implementation(project(":dispatch-core"))
implementation(project(":dispatch-internal-test-android"))
implementation(project(":dispatch-test"))
implementation(project(":dispatch-test-junit5"))

testImplementation(Libs.AndroidX.Fragment.ktx)
testImplementation(Libs.AndroidX.Lifecycle.runtime)
testImplementation(Libs.AndroidX.Test.Arch.core)
testImplementation(Libs.AndroidX.Test.Espresso.core)
Expand All @@ -72,4 +68,9 @@ dependencies {
testImplementation(Libs.RickBusarow.Hermit.junit5)
testImplementation(Libs.Robolectric.core)

testImplementation(project(":dispatch-android-lifecycle-extensions"))
testImplementation(project(":dispatch-internal-test-android"))
testImplementation(project(":dispatch-test"))
testImplementation(project(":dispatch-test-junit5"))

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@
package dispatch.android.lifecycle.internal

import androidx.lifecycle.*
import dispatch.android.lifecycle.*
import dispatch.android.lifecycle.LifecycleCoroutineScope.MinimumStatePolicy.*
import dispatch.core.*
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
import kotlinx.coroutines.flow.*
import java.util.concurrent.atomic.*
import kotlin.coroutines.*
import dispatch.android.lifecycle.LifecycleCoroutineScope as DispatchLifecycleCoroutineScope

@Suppress("EXPERIMENTAL_API_USAGE")
internal fun LifecycleCoroutineScope.launchOn(
internal fun DispatchLifecycleCoroutineScope.launchOn(
context: CoroutineContext,
minimumState: Lifecycle.State,
statePolicy: LifecycleCoroutineScope.MinimumStatePolicy,
statePolicy: DispatchLifecycleCoroutineScope.MinimumStatePolicy,
block: suspend CoroutineScope.() -> Unit
): Job = when (statePolicy) {
CANCEL -> launch { lifecycle.onNext(context, minimumState, block) }
CANCEL -> launch { lifecycle.onNext(context, minimumState, block) }
RESTART_EVERY -> launchEvery(context, minimumState, block)
}

Expand Down Expand Up @@ -72,7 +72,7 @@ internal suspend fun <T> Lifecycle.onNext(
}

@Suppress("EXPERIMENTAL_API_USAGE")
internal fun LifecycleCoroutineScope.launchEvery(
internal fun DispatchLifecycleCoroutineScope.launchEvery(
context: CoroutineContext,
minimumState: Lifecycle.State,
block: suspend CoroutineScope.() -> Unit
Expand Down
Loading

0 comments on commit 46ce1bd

Please sign in to comment.