Fix desc to handle single-value outputs correctly

Change-Id: Ie1dd39a7bc676bdab0a59bb75112188e44ecadfa
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/5620
Commit-Queue: Julie Hockett <juliehockett@google.com>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index a499384..6531a8e 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -229,20 +229,26 @@
 }
 
 // Outputs need special processing when output patterns are present.
-void ProcessOutputs(base::DictionaryValue* target) {
+void ProcessOutputs(base::DictionaryValue* target, bool files_only) {
   base::ListValue* patterns = nullptr;
   base::ListValue* outputs = nullptr;
   target->GetList("output_patterns", &patterns);
   target->GetList(variables::kOutputs, &outputs);
 
+  int indent = 0;
   if (outputs || patterns) {
-    OutputString("\noutputs\n");
-    int indent = 1;
+    if (!files_only) {
+      OutputString("\noutputs\n");
+      indent = 1;
+    }
     if (patterns) {
-      OutputString("  Output patterns\n");
-      indent = 2;
+      if (!files_only) {
+        OutputString("  Output patterns\n");
+        indent = 2;
+      }
       PrintValue(patterns, indent);
-      OutputString("\n  Resolved output file list\n");
+      if (!files_only)
+        OutputString("\n  Resolved output file list\n");
     }
     if (outputs)
       PrintValue(outputs, indent);
@@ -323,6 +329,10 @@
   }
   // Print single value
   if (!what.empty() && dict->size() == 1 && single_target) {
+    if (what == variables::kOutputs) {
+      ProcessOutputs(dict.get(), true);
+      return true;
+    }
     base::DictionaryValue::Iterator iter(*dict);
     auto pair = handler_map.find(what);
     if (pair != handler_map.end())
@@ -352,7 +362,7 @@
   HandleProperty(variables::kScript, handler_map, v, dict);
   HandleProperty(variables::kArgs, handler_map, v, dict);
   HandleProperty(variables::kDepfile, handler_map, v, dict);
-  ProcessOutputs(dict.get());
+  ProcessOutputs(dict.get(), false);
   HandleProperty("bundle_data", handler_map, v, dict);
   HandleProperty(variables::kArflags, handler_map, v, dict);
   HandleProperty(variables::kAsmflags, handler_map, v, dict);