in ruler-gradle-plugin/src/main/kotlin/com/spotify/ruler/plugin/RulerPlugin.kt [36:76]
override fun apply(project: Project) {
val rulerExtension = project.extensions.create(name, RulerExtension::class.java)
val rulerVerificationExtension = (rulerExtension as ExtensionAware).extensions.create(
"verification",
RulerVerificationExtension::class.java
)
project.plugins.withId("com.android.application") {
val androidComponents =
project.extensions.getByType(ApplicationAndroidComponentsExtension::class.java)
androidComponents.onVariants { variant ->
val variantName = StringGroovyMethods.capitalize(variant.name)
project.tasks.register(
"analyze${variantName}Bundle",
RulerTask::class.java
) { task ->
task.group = name
task.appInfo.set(getAppInfo(project, variant))
task.deviceSpec.set(getDeviceSpec(rulerExtension))
task.bundleFile.set(getBundleFile(project, variant))
task.mappingFile.set(getMappingFile(project, variant))
task.resourceMappingFile.set(getResourceMappingFile(project, variant))
task.ownershipFile.set(rulerExtension.ownershipFile)
task.defaultOwner.set(rulerExtension.defaultOwner)
task.workingDir.set(project.layout.buildDirectory.dir("intermediates/ruler/${variant.name}"))
task.reportDir.set(project.layout.buildDirectory.dir("reports/ruler/${variant.name}"))
task.staticDependenciesFile.set(rulerExtension.staticDependenciesFile)
task.omitFileBreakdown.set(rulerExtension.omitFileBreakdown)
task.unstrippedNativeFiles.set(rulerExtension.unstrippedNativeFiles)
task.verificationConfig.set(getVerificationConfig(rulerVerificationExtension))
// Add explicit dependency to support DexGuard
task.dependsOn("bundle$variantName")
}
}
}
}