[Retrace] Add --quiet option for disabling message on std-in

Bug: 170822824
Cherry picked commit: 4c8570220ec7d4b0a8551087abe54ae99ae3e0c6
Change-Id: I922291be4f0e12e32ede3d316f1cdf190748c6a8
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index adf9583..f4bf73d 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -49,7 +49,8 @@
 
   public static final String USAGE_MESSAGE =
       StringUtils.lines(
-          "Usage: retrace <proguard-map> [stack-trace-file] [--regex <regexp>, --verbose, --info]",
+          "Usage: retrace <proguard-map> [stack-trace-file] "
+              + "[--regex <regexp>, --verbose, --info, --quiet]",
           "  where <proguard-map> is an r8 generated mapping file.");
 
   private static Builder parseArguments(String[] args, DiagnosticsHandler diagnosticsHandler) {
@@ -58,6 +59,7 @@
     boolean hasSetProguardMap = false;
     boolean hasSetStackTrace = false;
     boolean hasSetRegularExpression = false;
+    boolean hasSetQuiet = false;
     while (context.head() != null) {
       Boolean help = OptionsParsing.tryParseBoolean(context, "--help");
       if (help != null) {
@@ -77,6 +79,11 @@
         builder.setVerbose(true);
         continue;
       }
+      Boolean quiet = OptionsParsing.tryParseBoolean(context, "--quiet");
+      if (quiet != null) {
+        hasSetQuiet = true;
+        continue;
+      }
       String regex = OptionsParsing.tryParseSingle(context, "--regex", "r");
       if (regex != null && !regex.isEmpty()) {
         builder.setRegularExpression(regex);
@@ -104,7 +111,7 @@
       throw new RetraceAbortException();
     }
     if (!hasSetStackTrace) {
-      builder.setStackTrace(getStackTraceFromStandardInput());
+      builder.setStackTrace(getStackTraceFromStandardInput(hasSetQuiet));
     }
     if (!hasSetRegularExpression) {
       builder.setRegularExpression(DEFAULT_REGULAR_EXPRESSION);
@@ -238,8 +245,10 @@
     withMainProgramHandler(() -> run(args));
   }
 
-  private static List<String> getStackTraceFromStandardInput() {
-    System.out.println("Waiting for stack-trace input...");
+  private static List<String> getStackTraceFromStandardInput(boolean printWaitingMessage) {
+    if (!printWaitingMessage) {
+      System.out.println("Waiting for stack-trace input...");
+    }
     Scanner sc = new Scanner(new InputStreamReader(System.in, Charsets.UTF_8));
     List<String> readLines = new ArrayList<>();
     while (sc.hasNext()) {
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
index 85e6cbc..2074afa 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
@@ -7,6 +7,7 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.StringContains.containsString;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.ToolHelper;
@@ -176,6 +177,12 @@
     assertTrue(processResult.stdout.startsWith(WAITING_MESSAGE));
   }
 
+  @Test
+  public void testHelpMessageWithQuiet() throws IOException {
+    ProcessResult processResult = runRetrace("", "", true, "--quiet");
+    assertFalse(processResult.stdout.startsWith(WAITING_MESSAGE));
+  }
+
   private final String nonMappableStackTrace =
       StringUtils.lines(
           "com.android.r8.R8Exception: Problem when compiling program",