Skip to content

Commit

Permalink
add configuration dependencies task
Browse files Browse the repository at this point in the history
  • Loading branch information
MeilCli committed Jun 25, 2020
1 parent 48616cc commit 9aa0eb3
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ open class LibrarianPlugin : Plugin<Project> {
this.extension = extension
}

project.createTask<ShowFirstConfigurationDependenciesTask>("librarianShowFirstConfigurationDependencies").apply {
this.extension = extension
}

project.createTask<ShowAllConfigurationDependenciesTask>("librarianShowAllConfigurationDependencies").apply {
this.extension = extension
}

project.createTask<ShowFilteredDependencyGraphTask>("librarianShowFilteredDependencyGraph").apply {
this.extension = extension
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package net.meilcli.librarian.plugin.tasks

import net.meilcli.librarian.plugin.LibrarianDepth
import net.meilcli.librarian.plugin.LibrarianExtension
import net.meilcli.librarian.plugin.entities.DependencyGraph
import net.meilcli.librarian.plugin.internal.artifacts.DependencyGraphLoader
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction

open class ShowAllConfigurationDependenciesTask : DefaultTask() {

@Input
var extension: LibrarianExtension? = null

@TaskAction
fun action() {
val extension = extension ?: return

val dependencyGraphLoader = DependencyGraphLoader(project, LibrarianDepth.AllLevel, extension.ignoreArtifacts)
val dependencyGraph = dependencyGraphLoader.load()

val configurationDependencies = mutableMapOf<String, MutableList<String>>()

for ((project, configurationMap) in dependencyGraph.graph) {
for ((configuration, elements) in configurationMap) {
for (element in elements) {
if (element !is DependencyGraph.Element.Artifact) {
continue
}
val list = configurationDependencies.getOrPut(element.artifact.artifact) { mutableListOf() }
list += ":${project.name}:${configuration.name}"
}
}
}

project.logger.quiet("dependencies")
for (configurationDependency in configurationDependencies.toSortedMap()) {
project.logger.quiet("${configurationDependency.key}: ${configurationDependency.value.distinct().joinToString()}")
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package net.meilcli.librarian.plugin.tasks

import net.meilcli.librarian.plugin.LibrarianDepth
import net.meilcli.librarian.plugin.LibrarianExtension
import net.meilcli.librarian.plugin.entities.DependencyGraph
import net.meilcli.librarian.plugin.internal.artifacts.DependencyGraphLoader
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction

open class ShowFirstConfigurationDependenciesTask : DefaultTask() {

@Input
var extension: LibrarianExtension? = null

@TaskAction
fun action() {
val extension = extension ?: return

val dependencyGraphLoader = DependencyGraphLoader(project, LibrarianDepth.FirstLevel, extension.ignoreArtifacts)
val dependencyGraph = dependencyGraphLoader.load()

val configurationDependencies = mutableMapOf<String, MutableList<String>>()

for ((project, configurationMap) in dependencyGraph.graph) {
for ((configuration, elements) in configurationMap) {
for (element in elements) {
if (element !is DependencyGraph.Element.Artifact) {
continue
}
val list = configurationDependencies.getOrPut(element.artifact.artifact) { mutableListOf() }
list += ":${project.name}:${configuration.name}"
}
}
}

project.logger.quiet("dependencies")
for (configurationDependency in configurationDependencies.toSortedMap()) {
project.logger.quiet("${configurationDependency.key}: ${configurationDependency.value.distinct().joinToString()}")
}
}
}

0 comments on commit 9aa0eb3

Please sign in to comment.