From 9aa0eb3861f3ed37bbf7584fbcb01e7eafa740b2 Mon Sep 17 00:00:00 2001 From: meil Date: Fri, 26 Jun 2020 00:21:35 +0900 Subject: [PATCH] add configuration dependencies task --- .../librarian/plugin/LibrarianPlugin.kt | 8 ++++ .../ShowAllConfigurationDependenciesTask.kt | 42 +++++++++++++++++++ .../ShowFirstConfigurationDependenciesTask.kt | 42 +++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowAllConfigurationDependenciesTask.kt create mode 100644 plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowFirstConfigurationDependenciesTask.kt diff --git a/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/LibrarianPlugin.kt b/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/LibrarianPlugin.kt index b77349b..f456dfa 100644 --- a/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/LibrarianPlugin.kt +++ b/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/LibrarianPlugin.kt @@ -37,6 +37,14 @@ open class LibrarianPlugin : Plugin { this.extension = extension } + project.createTask("librarianShowFirstConfigurationDependencies").apply { + this.extension = extension + } + + project.createTask("librarianShowAllConfigurationDependencies").apply { + this.extension = extension + } + project.createTask("librarianShowFilteredDependencyGraph").apply { this.extension = extension } diff --git a/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowAllConfigurationDependenciesTask.kt b/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowAllConfigurationDependenciesTask.kt new file mode 100644 index 0000000..78a8df0 --- /dev/null +++ b/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowAllConfigurationDependenciesTask.kt @@ -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>() + + 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()}") + } + } +} \ No newline at end of file diff --git a/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowFirstConfigurationDependenciesTask.kt b/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowFirstConfigurationDependenciesTask.kt new file mode 100644 index 0000000..9e114f2 --- /dev/null +++ b/plugin-core/src/main/kotlin/net/meilcli/librarian/plugin/tasks/ShowFirstConfigurationDependenciesTask.kt @@ -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>() + + 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()}") + } + } +} \ No newline at end of file