refactor(build-logic): use ExtensionContainer#configure extension

This commit is contained in:
Harsh Shandilya 2022-12-02 02:17:20 +05:30
parent 3410f7d22d
commit acdad21bf6
No known key found for this signature in database
7 changed files with 28 additions and 22 deletions

View file

@ -11,8 +11,8 @@ import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.the import org.gradle.kotlin.dsl.the
@Suppress("Unused") @Suppress("Unused")
@ -21,7 +21,7 @@ class ApplicationPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project) {
project.pluginManager.apply(AppPlugin::class) project.pluginManager.apply(AppPlugin::class)
AndroidCommon.configure(project) AndroidCommon.configure(project)
project.extensions.getByType<BaseAppModuleExtension>().run { project.extensions.configure<BaseAppModuleExtension> {
val minifySwitch = project.providers.environmentVariable("DISABLE_MINIFY") val minifySwitch = project.providers.environmentVariable("DISABLE_MINIFY")
adbOptions.installOptions("--user 0") adbOptions.installOptions("--user 0")

View file

@ -7,15 +7,16 @@ import nl.littlerobots.vcu.plugin.VersionCatalogUpdatePlugin
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.withType import org.gradle.kotlin.dsl.withType
@Suppress("Unused") @Suppress("Unused")
class DependencyUpdatesPlugin : Plugin<Project> { class DependencyUpdatesPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project) {
project.pluginManager.apply(VersionsPlugin::class) project.pluginManager.apply(VersionsPlugin::class)
project.pluginManager.apply(VersionCatalogUpdatePlugin::class) project.pluginManager.apply(VersionCatalogUpdatePlugin::class)
project.tasks.withType<DependencyUpdatesTask>().configureEach { project.tasks.withType<DependencyUpdatesTask> {
rejectVersionIf { rejectVersionIf {
when (candidate.group) { when (candidate.group) {
"commons-codec", "commons-codec",
@ -26,7 +27,7 @@ class DependencyUpdatesPlugin : Plugin<Project> {
} }
checkForGradleUpdate = false checkForGradleUpdate = false
} }
project.extensions.getByType<VersionCatalogUpdateExtension>().run { project.extensions.configure<VersionCatalogUpdateExtension> {
keep.keepUnusedLibraries.set(true) keep.keepUnusedLibraries.set(true)
} }
} }

View file

@ -8,7 +8,7 @@ package app.passwordstore.gradle
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin
import org.jetbrains.kotlin.gradle.plugin.KaptExtension import org.jetbrains.kotlin.gradle.plugin.KaptExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper
@ -22,7 +22,7 @@ class KotlinKaptPlugin : Plugin<Project> {
apply(Kapt3GradleSubplugin::class) apply(Kapt3GradleSubplugin::class)
} }
project.afterEvaluate { project.afterEvaluate {
project.extensions.getByType<KaptExtension>().run { project.extensions.configure<KaptExtension> {
javacOptions { javacOptions {
if (hasDaggerCompilerDependency()) { if (hasDaggerCompilerDependency()) {
// https://dagger.dev/dev-guide/compiler-options#fastinit-mode // https://dagger.dev/dev-guide/compiler-options#fastinit-mode

View file

@ -10,7 +10,7 @@ import me.tylerbwong.gradle.metalava.extension.MetalavaExtension
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.provideDelegate import org.gradle.kotlin.dsl.provideDelegate
import org.gradle.plugins.signing.SigningExtension import org.gradle.plugins.signing.SigningExtension
import org.gradle.plugins.signing.SigningPlugin import org.gradle.plugins.signing.SigningPlugin
@ -25,18 +25,18 @@ class PublishedAndroidLibraryPlugin : Plugin<Project> {
apply(SigningPlugin::class) apply(SigningPlugin::class)
apply("me.tylerbwong.gradle.metalava") apply("me.tylerbwong.gradle.metalava")
} }
project.extensions.getByType<MavenPublishBaseExtension>().run { project.extensions.configure<MavenPublishBaseExtension> {
publishToMavenCentral(SonatypeHost.DEFAULT, true) publishToMavenCentral(SonatypeHost.DEFAULT, true)
signAllPublications() signAllPublications()
} }
project.afterEvaluate { project.afterEvaluate {
project.extensions.getByType<SigningExtension>().run { project.extensions.configure<SigningExtension> {
val signingKey: String? by project val signingKey: String? by project
val signingPassword: String? by project val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword) useInMemoryPgpKeys(signingKey, signingPassword)
} }
} }
project.extensions.getByType<MetalavaExtension>().run { project.extensions.configure<MetalavaExtension> {
documentation.set(Documentation.PUBLIC) documentation.set(Documentation.PUBLIC)
inputKotlinNulls.set(true) inputKotlinNulls.set(true)
outputKotlinNulls.set(true) outputKotlinNulls.set(true)

View file

@ -7,7 +7,7 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.VariantOutputConfiguration import com.android.build.api.variant.VariantOutputConfiguration
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.register
@Suppress("Unused") @Suppress("Unused")
@ -15,7 +15,7 @@ class RenameArtifactsPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project) {
project.pluginManager.withPlugin("com.android.application") { project.pluginManager.withPlugin("com.android.application") {
project.extensions.getByType<ApplicationAndroidComponentsExtension>().run { project.extensions.configure<ApplicationAndroidComponentsExtension> {
onVariants { variant -> onVariants { variant ->
project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") { project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") {
variantName.set(variant.name) variantName.set(variant.name)

View file

@ -8,14 +8,14 @@ import io.sentry.android.gradle.extensions.SentryPluginExtension
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure
@Suppress("Unused") @Suppress("Unused")
class SentryPlugin : Plugin<Project> { class SentryPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project) {
project.pluginManager.withPlugin("com.android.application") { project.pluginManager.withPlugin("com.android.application") {
project.extensions.getByType<ApplicationAndroidComponentsExtension>().run { project.extensions.configure<ApplicationAndroidComponentsExtension> {
onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) { onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) {
variant -> variant ->
val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY) val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
@ -25,7 +25,7 @@ class SentryPlugin : Plugin<Project> {
} }
} }
project.plugins.apply(SentryPlugin::class) project.plugins.apply(SentryPlugin::class)
project.extensions.getByType<SentryPluginExtension>().run { project.extensions.configure<SentryPluginExtension> {
autoUploadProguardMapping.set( autoUploadProguardMapping.set(
project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
) )
@ -38,6 +38,7 @@ class SentryPlugin : Plugin<Project> {
} }
private companion object { private companion object {
private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN" private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
private const val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings" private const val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings"
} }

View file

@ -13,7 +13,7 @@ import java.util.Properties
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.register
import org.gradle.kotlin.dsl.withType import org.gradle.kotlin.dsl.withType
@ -45,11 +45,15 @@ class VersioningPlugin : Plugin<Project> {
} }
project.plugins.withType<AppPlugin> { project.plugins.withType<AppPlugin> {
androidAppPluginApplied.set(true) androidAppPluginApplied.set(true)
extensions.getByType<ApplicationAndroidComponentsExtension>().onVariants { variant -> extensions.configure<ApplicationAndroidComponentsExtension> {
val mainOutput = onVariants { variant ->
variant.outputs.single { it.outputType == VariantOutputConfiguration.OutputType.SINGLE } val mainOutput =
mainOutput.versionName.set(versionName) variant.outputs.single {
mainOutput.versionCode.set(versionCode) it.outputType == VariantOutputConfiguration.OutputType.SINGLE
}
mainOutput.versionName.set(versionName)
mainOutput.versionCode.set(versionCode)
}
} }
} }
val version = Semver(versionName) val version = Semver(versionName)