All Downloads are FREE. Search and download functionalities are using the official Maven repository.

name.remal.gradle_plugins.dsl.extensions.org.gradle.api.artifacts.ConfigurationContainer.kt Maven / Gradle / Ivy

There is a newer version: 1.9.2
Show newest version
package name.remal.gradle_plugins.dsl.extensions

import name.remal.concurrentMapOf
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ConfigurationContainer
import org.gradle.api.artifacts.Dependency

fun ConfigurationContainer.createDependencyTransformConfiguration(configuration: Configuration, newConfigurationName: String, isRecursive: Boolean = true, transformer: (dependency: Dependency) -> Dependency): Configuration {
    val resultConf = create(newConfigurationName)

    val dependenciesMapping = concurrentMapOf()
    val dependenciesCollection = if (isRecursive) configuration.allDependencies else configuration.dependencies
    dependenciesCollection.whenObjectAdded { dependency ->
        val transformedDependency = transformer(dependency)
        dependenciesMapping[dependency] = transformedDependency
        resultConf.dependencies.add(transformedDependency)
    }
    dependenciesCollection.whenObjectRemoved { dependency ->
        dependenciesMapping[dependency]?.let { resultConf.dependencies.remove(it) }
    }

    return resultConf
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy