override fun apply()

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")
                }
            }
        }
    }