aquery: Add option to include/exclude the command line of actions.

RELNOTES: None
PiperOrigin-RevId: 211810138
diff --git a/src/main/java/com/google/devtools/build/lib/query2/ActionGraphProtoOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/ActionGraphProtoOutputFormatterCallback.java
index d18ee18..6b148b8 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/ActionGraphProtoOutputFormatterCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/ActionGraphProtoOutputFormatterCallback.java
@@ -38,8 +38,7 @@
       SkyframeExecutor skyframeExecutor,
       TargetAccessor<ConfiguredTargetValue> accessor) {
     super(reporter, options, out, skyframeExecutor, accessor);
-    // TODO(twerth): Allow users to include action command lines.
-    actionGraphDump = new ActionGraphDump(/* includeActionCmdLine */ false);
+    actionGraphDump = new ActionGraphDump(options.includeCommandline);
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/query2/ActionGraphTextOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/ActionGraphTextOutputFormatterCallback.java
index 45a1e96..26c89f3 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/ActionGraphTextOutputFormatterCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/ActionGraphTextOutputFormatterCallback.java
@@ -144,17 +144,18 @@
             .append("]\n");
       }
 
-      // TODO(twerth): Add option to only optionally include the command line.
-      stringBuilder
-          .append("  Command Line: ")
-          .append(
-              CommandFailureUtils.describeCommand(
-                  CommandDescriptionForm.COMPLETE,
-                  /* prettyPrintArgs= */ true,
-                  spawnAction.getArguments(),
-                  /* environment= */ null,
-                  /* cwd= */ null))
-          .append("\n");
+      if (options.includeCommandline) {
+        stringBuilder
+            .append("  Command Line: ")
+            .append(
+                CommandFailureUtils.describeCommand(
+                    CommandDescriptionForm.COMPLETE,
+                    /* prettyPrintArgs= */ true,
+                    spawnAction.getArguments(),
+                    /* environment= */ null,
+                    /* cwd= */ null))
+            .append("\n");
+      }
     }
 
     if (action instanceof ExecutionInfoSpecifier) {
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/AqueryOptions.java b/src/main/java/com/google/devtools/build/lib/query2/output/AqueryOptions.java
index 157b3b4f..5a83282 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/AqueryOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/AqueryOptions.java
@@ -27,4 +27,12 @@
       effectTags = {OptionEffectTag.TERMINAL_OUTPUT},
       help = "The format in which the aquery results should be printed.")
   public String outputFormat;
+
+  @Option(
+      name = "include_commandline",
+      defaultValue = "true",
+      documentationCategory = OptionDocumentationCategory.QUERY,
+      effectTags = {OptionEffectTag.TERMINAL_OUTPUT},
+      help = "Includes the content of the action command lines in the output (potentially large).")
+  public boolean includeCommandline;
 }
diff --git a/src/test/shell/integration/aquery_test.sh b/src/test/shell/integration/aquery_test.sh
index 67f34bb..d0b5a51 100755
--- a/src/test/shell/integration/aquery_test.sh
+++ b/src/test/shell/integration/aquery_test.sh
@@ -115,6 +115,11 @@
   else
     assert_contains "Command Line: (" output
   fi
+
+  assert_contains "echo unused" output
+  bazel aquery --noinclude_commandline "//$pkg:bar" > output \
+    2> "$TEST_log" || fail "Expected success"
+  assert_not_contains "echo unused" output
 }
 
 function test_aquery_skylark_env() {