diff options
author | juliexxia <juliexxia@google.com> | 2018-03-27 13:46:10 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-27 13:49:21 -0700 |
commit | d350a897f6182d637ea819c41cd292a50c2db53d (patch) | |
tree | c4c6e88457ababaf8508418d8bcb79aa25187d91 /src/main/java/com/google/devtools/build/lib/buildtool | |
parent | 7a84f6532428f0b93d323f43e9831c00f854475e (diff) |
Move the default cquery output format to its own callback and standardize cquery output callback logic
PiperOrigin-RevId: 190667120
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildtool')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java | 56 |
1 files changed, 21 insertions, 35 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java index 46c96d80ab..d97bbda349 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java @@ -15,22 +15,19 @@ package com.google.devtools.build.lib.buildtool; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult; -import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.ViewCreationFailedException; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.query2.ConfiguredTargetQueryEnvironment; -import com.google.devtools.build.lib.query2.TransitionsOutputFormatterCallback; +import com.google.devtools.build.lib.query2.CqueryThreadsafeCallback; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction; import com.google.devtools.build.lib.query2.engine.QueryEvalResult; import com.google.devtools.build.lib.query2.engine.QueryException; import com.google.devtools.build.lib.query2.engine.QueryExpression; import com.google.devtools.build.lib.query2.engine.TargetLiteral; -import com.google.devtools.build.lib.query2.engine.ThreadSafeOutputFormatterCallback; import com.google.devtools.build.lib.query2.output.CqueryOptions; -import com.google.devtools.build.lib.query2.output.CqueryOptions.Transitions; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.skyframe.SkyframeExecutorWrappingWalkableGraph; import com.google.devtools.build.skyframe.WalkableGraph; @@ -130,38 +127,27 @@ public class CqueryBuildTool extends BuildTool { env.getPackageManager().getPackagePath(), () -> walkableGraph, cqueryOptions.toSettings()); - CqueryOptions.Transitions transitions = cqueryOptions.transitions; - ThreadSafeOutputFormatterCallback<ConfiguredTarget> callback = - !transitions.equals(Transitions.NONE) - ? new TransitionsOutputFormatterCallback( - configuredTargetQueryEnvironment.getAccessor(), - transitions, - env.getReporter().getOutErr().getOutputStream(), - env.getSkyframeExecutor(), - hostConfiguration) - : new ThreadSafeOutputFormatterCallback<ConfiguredTarget>() { - @Override - public void processOutput(Iterable<ConfiguredTarget> partialResult) { - for (ConfiguredTarget configuredTarget : partialResult) { - BuildConfiguration config = - env.getSkyframeExecutor() - .getConfiguration( - env.getReporter(), configuredTarget.getConfigurationKey()); - StringBuilder output = - new StringBuilder() - .append( - ConfiguredTargetQueryEnvironment.getCorrectLabel(configuredTarget)) - .append(" (") - .append(config != null && config.isHostConfiguration() ? "HOST" : config) - .append(")"); - env.getReporter().getOutErr().printOutLn(output.toString()); - } - } - }; + Iterable<CqueryThreadsafeCallback> callbacks = + ConfiguredTargetQueryEnvironment.getDefaultOutputFormatters( + configuredTargetQueryEnvironment.getAccessor(), + cqueryOptions, + env.getReporter().getOutErr().getOutputStream(), + env.getSkyframeExecutor(), + hostConfiguration); + CqueryThreadsafeCallback callback = + CqueryThreadsafeCallback.getCallback(cqueryOptions.outputFormat, callbacks); + if (callback == null) { + env.getReporter() + .handle( + Event.error( + String.format( + "Invalid output format '%s'. Valid values are: %s", + cqueryOptions.outputFormat, + CqueryThreadsafeCallback.callbackNames(callbacks)))); + return; + } QueryEvalResult result = - configuredTargetQueryEnvironment.evaluateQuery( - queryExpression, - callback); + configuredTargetQueryEnvironment.evaluateQuery(queryExpression, callback); if (result.isEmpty()) { env.getReporter().handle(Event.info("Empty query results")); } |