Skip to content

Commit

Permalink
Merge pull request #391 from gradle/erichaagdev/java-tool-printing-cl…
Browse files Browse the repository at this point in the history
…eanup

Java tool printing logic is simplified
  • Loading branch information
erichaagdev committed Apr 7, 2023
2 parents ee8e351 + ff7292f commit bf6f79f
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.gradle.enterprise.cli;

import com.gradle.enterprise.model.BuildScanData;
import com.gradle.enterprise.model.BuildTimeMetrics;

import java.util.List;
import java.util.stream.Stream;

import static java.util.stream.Collectors.joining;

final class BuildInsightsPrinter {

static void printInsights(List<BuildScanData> buildScanData) {
printBuildScanDataHeader();
printBuildScanData(buildScanData);

if (buildScanData.size() == 2) {
printBuildTimeMetricsHeader();
printBuildTimeMetrics(buildScanData);
}
}

private static void printBuildScanDataHeader() {
printRow(BuildScanDataFields.ordered().map(f -> f.label));
}

private static void printBuildScanData(List<BuildScanData> buildScanData) {
buildScanData.forEach(BuildInsightsPrinter::printBuildScanData);
}

private static void printBuildScanData(BuildScanData buildScanData) {
printRow(BuildScanDataFields.ordered().map(f -> f.value.apply(buildScanData)));
}

private static void printBuildTimeMetricsHeader() {
printRow(BuildTimeMetricsFields.ordered().map(f -> f.label));
}

private static void printBuildTimeMetrics(List<BuildScanData> buildScanData) {
final BuildTimeMetrics buildTimeData = BuildTimeMetrics.from(buildScanData.get(0), buildScanData.get(1));
if (buildTimeData == null) {
printRow(BuildTimeMetricsFields.ordered().map(f -> ""));
} else {
printRow(BuildTimeMetricsFields.ordered().map(f -> f.value.apply(buildTimeData)));
}
}

private static void printRow(Stream<String> values) {
System.out.println(values.collect(joining(",")));
}

private BuildInsightsPrinter() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.gradle.enterprise.api.client.FailedRequestException;
import com.gradle.enterprise.api.client.GradleEnterpriseApiClient;
import com.gradle.enterprise.model.BuildTimeMetrics;
import com.gradle.enterprise.model.BuildScanData;
import com.gradle.enterprise.model.CustomValueNames;
import com.gradle.enterprise.model.NumberedBuildScan;
Expand Down Expand Up @@ -71,7 +70,7 @@ public Integer call() {
logFinishedFetchingAllBuildScanData();
logFetchResults(buildScanData, customValueKeys);

printResults(buildScanData);
BuildInsightsPrinter.printInsights(buildScanData);

return ExitCode.OK;
}
Expand Down Expand Up @@ -174,46 +173,6 @@ private void logFetchResultFor(int runNum, String property, String customValueKe
);
}

private static void printResults(List<BuildScanData> buildScanData) {
printBuildScanDataHeader();
printBuildScanData(buildScanData);

if (buildScanData.size() == 2) {
printBuildTimeMetricsHeader();
printBuildTimeMetrics(buildScanData);
}
}

public static void printBuildScanDataHeader() {
List<String> labels = BuildScanDataFields.ordered().map(f -> f.label).collect(Collectors.toList());
System.out.println(String.join(",", labels));
}

private static void printBuildScanData(List<BuildScanData> buildScanData) {
buildScanData.forEach(FetchBuildScanDataCommand::printBuildScanData);
}

private static void printBuildScanData(BuildScanData buildScanData) {
List<String> values = BuildScanDataFields.ordered().map(f -> f.value.apply(buildScanData)).collect(Collectors.toList());
System.out.println(String.join(",", values));
}

private static void printBuildTimeMetricsHeader() {
List<String> labels = BuildTimeMetricsFields.ordered().map(f -> f.label).collect(Collectors.toList());
System.out.println(String.join(",", labels));
}

private static void printBuildTimeMetrics(List<BuildScanData> buildScanData) {
final BuildTimeMetrics buildTimeData = BuildTimeMetrics.from(buildScanData.get(0), buildScanData.get(1));
List<String> values;
if (buildTimeData == null) {
values = BuildTimeMetricsFields.ordered().map(f -> "").collect(Collectors.toList());
} else {
values = BuildTimeMetricsFields.ordered().map(f -> f.value.apply(buildTimeData)).collect(Collectors.toList());
}
System.out.println(String.join(",", values));
}

private static String toOrdinal(int i) {
switch(i + 1) {
case 1: return "first";
Expand Down

0 comments on commit bf6f79f

Please sign in to comment.