From a2f01cf56456ea660787c650c846e7db52dae672 Mon Sep 17 00:00:00 2001 From: Gregory Amerson Date: Wed, 14 Oct 2020 11:06:02 -0500 Subject: [PATCH] Add --show-inputs and --show-outputs options fixes #19 Signed-off-by: Gregory Amerson --- .../gradle/tasktree/TaskTreeTask.groovy | 44 ++++++++++++++++++- .../gradle/tasktree/TaskTreeTaskNew.groovy | 10 +++++ .../gradle/tasktree/TaskTreeTaskOld.groovy | 10 +++++ 3 files changed, 63 insertions(+), 1 deletion(-) diff --git a/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTask.groovy b/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTask.groovy index ba5c2d5..40da6a0 100644 --- a/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTask.groovy +++ b/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTask.groovy @@ -2,6 +2,7 @@ package com.dorongold.gradle.tasktree import org.gradle.api.Project import org.gradle.api.execution.TaskExecutionGraph +import org.gradle.api.file.FileCollection import org.gradle.api.tasks.diagnostics.AbstractReportTask import org.gradle.api.tasks.diagnostics.internal.ReportRenderer import org.gradle.api.tasks.diagnostics.internal.TextReportRenderer @@ -16,6 +17,8 @@ import org.gradle.util.CollectionUtils abstract class TaskTreeTask extends AbstractReportTask { public TextReportRenderer renderer = new TextReportRenderer() protected boolean noRepeat = false + protected boolean showInputs = false + protected boolean showOutputs = false protected int taskDepth = Integer.MAX_VALUE @Override @@ -75,7 +78,7 @@ abstract class TaskTreeTask extends AbstractReportTask { textOutput.println() textOutput.text("To see task dependency tree for a specific task, run ") - metaData.describeCommand(textOutput.withStyle(Style.UserInput), String.format(": :taskTree [--no-repeat] [--task-depth ]")) + metaData.describeCommand(textOutput.withStyle(Style.UserInput), String.format(": :taskTree [--no-repeat] [--task-depth ] [--show-inputs] [--show-outputs]")) textOutput.println() textOutput.text("Executions of all tasks except for ") @@ -100,6 +103,13 @@ abstract class TaskTreeTask extends AbstractReportTask { return noRepeat } + boolean isShowInputs() { + return showInputs + } + + boolean isShowOutputs() { + return showOutputs + } int getTaskDepth() { return taskDepth @@ -127,6 +137,38 @@ abstract class TaskTreeTask extends AbstractReportTask { } }, lastChild) + if (showInputs) { + FileCollection inputFiles = entryTask.task.inputs.files + + if (!inputFiles.isEmpty()) { + renderer.visit({ + it.text("${entryTask.task.path}:inputs.files") + }, lastChild) + + inputFiles.each { inputFile -> + renderer.visit({ + it.text(" ${inputFile}") + }, lastChild) + } + } + } + + if (showOutputs) { + FileCollection outputFiles = entryTask.task.outputs.files + + if (!outputFiles.isEmpty()) { + renderer.visit({ + it.text("${entryTask.task.path}:outputs.files") + }, lastChild) + + outputFiles.each {outputFile -> + renderer.visit({ + it.text(" ${outputFile}") + }, lastChild) + } + } + } + if (skippingChildren) { // skip children because depth is exceeded } else if (!noRepeat || !taskSubtreeAlreadyPrinted) { diff --git a/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskNew.groovy b/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskNew.groovy index 96d0f65..8e4b87f 100644 --- a/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskNew.groovy +++ b/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskNew.groovy @@ -8,6 +8,16 @@ class TaskTreeTaskNew extends TaskTreeTask { super.noRepeat = noRepeat } + @Option(option = "show-inputs", description = "print task inputs just below task in graph") + void setShowInputs(boolean showInputs) { + super.showInputs = showInputs + } + + @Option(option = "show-outputs", description = "print task outputs just below task in graph") + void setShowOutputs(boolean showOutputs) { + super.showOutputs = showOutputs + } + @Option(option = "task-depth", description = "descend at most levels into each task dependency") void setTaskDepth(String depth) { super.taskDepth = depth.toInteger() diff --git a/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskOld.groovy b/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskOld.groovy index 5d2b656..197e39d 100644 --- a/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskOld.groovy +++ b/src/main/groovy/com/dorongold/gradle/tasktree/TaskTreeTaskOld.groovy @@ -8,6 +8,16 @@ class TaskTreeTaskOld extends TaskTreeTask{ super.noRepeat = noRepeat } + @Option(option = "show-inputs", description = "print task inputs just below task in graph") + void setShowInputs(boolean showInputs) { + super.showInputs = showInputs + } + + @Option(option = "show-outputs", description = "print task outputs just below task in graph") + void setShowOutputs(boolean showOutputs) { + super.showOutputs = showOutputs + } + @Option(option = "task-depth", description = "descend at most levels into each task dependency") void setTaskDepth(String depth) { super.taskDepth = depth.toInteger()