[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",