Skip to content

Commit 5f0433e

Browse files
authored
Add: Minimum required Android Gradle Plugin version check (#51)
1 parent 8c7de7a commit 5f0433e

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

plugin/src/main/kotlin/org/neotech/plugin/rootcoverage/RootCoveragePlugin.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.neotech.plugin.rootcoverage
22

3+
import com.android.build.api.AndroidPluginVersion
34
import com.android.build.api.artifact.MultipleArtifact
45
import com.android.build.api.dsl.BuildType
56
import com.android.build.api.variant.AndroidComponentsExtension
@@ -13,12 +14,15 @@ import org.gradle.testing.jacoco.plugins.JacocoPlugin
1314
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
1415
import org.gradle.testing.jacoco.tasks.JacocoReport
1516
import org.neotech.plugin.rootcoverage.utilities.afterAndroidPluginApplied
17+
import org.neotech.plugin.rootcoverage.utilities.assertMinimumRequiredAGPVersion
1618
import org.neotech.plugin.rootcoverage.utilities.fileTree
1719
import org.neotech.plugin.rootcoverage.utilities.onVariant
1820
import java.io.File
1921

2022
class RootCoveragePlugin : Plugin<Project> {
2123

24+
private val minimumRequiredAgpVersion = AndroidPluginVersion(7, 2).alpha(6)
25+
2226
private lateinit var rootProjectExtension: RootCoveragePluginExtension
2327

2428
override fun apply(project: Project) {
@@ -136,6 +140,7 @@ class RootCoveragePlugin : Plugin<Project> {
136140
private fun JacocoReport.addSubProjectInternal(subProject: Project) {
137141
// Only Android modules are supported
138142
val androidComponents = subProject.extensions.getByType(AndroidComponentsExtension::class.java)
143+
androidComponents.assertMinimumRequiredAGPVersion(minimumRequiredAgpVersion)
139144

140145
// Get the exact required build variant for the current sub-project.
141146
val buildVariant = rootProjectExtension.getBuildVariantFor(subProject)

plugin/src/main/kotlin/org/neotech/plugin/rootcoverage/utilities/AndroidGradlePluginExtensions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
package org.neotech.plugin.rootcoverage.utilities
22

3+
import com.android.build.api.AndroidPluginVersion
34
import com.android.build.api.variant.AndroidComponentsExtension
45
import com.android.build.api.variant.Variant
6+
import org.gradle.api.GradleException
57
import org.gradle.api.Project
68
import org.gradle.api.plugins.AppliedPlugin
79

10+
fun AndroidComponentsExtension<*, *, *>.assertMinimumRequiredAGPVersion(requiredVersion: AndroidPluginVersion) {
11+
if (pluginVersion < requiredVersion) {
12+
throw GradleException(
13+
"This version of the RootCoveragePlugin requires a minimum Android Gradle Plugin version of $requiredVersion"
14+
)
15+
}
16+
}
17+
818
fun Project.onVariant(variantName: String, action: (variant: Variant?) -> Unit){
919
var variant: Variant? = null
1020
val androidComponents = extensions.getByType(AndroidComponentsExtension::class.java)

0 commit comments

Comments
 (0)