[Retrace] Update usage message to use parse flags
Change-Id: I55d1b84512fa3cf8638e7b00c26553771d240dcb
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 5cca6e8..0150f83 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -9,6 +9,9 @@
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.Keep;
+import com.android.tools.r8.ParseFlagInfo;
+import com.android.tools.r8.ParseFlagInfoImpl;
+import com.android.tools.r8.ParseFlagPrinter;
import com.android.tools.r8.Version;
import com.android.tools.r8.retrace.internal.RetraceAbortException;
import com.android.tools.r8.retrace.internal.RetraceBase;
@@ -21,6 +24,7 @@
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.Timing;
import com.google.common.base.Charsets;
+import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
@@ -42,11 +46,29 @@
@Keep
public class Retrace<T, ST extends StackTraceElementProxy<T, ST>> extends RetraceBase<T, ST> {
- public static final String USAGE_MESSAGE =
+ private static final String USAGE_MESSAGE =
StringUtils.lines(
- "Usage: retrace <proguard-map> [stack-trace-file] "
- + "[--regex <regexp>, --verbose, --info, --quiet, --verify-mapping-file-hash]",
- " where <proguard-map> is an r8 generated mapping file.");
+ "Usage: retrace [options] <proguard-map> [stack-trace-file] "
+ + "where <proguard-map> is a generated mapping file and options are:");
+
+ public static List<ParseFlagInfo> getFlags() {
+ return ImmutableList.<ParseFlagInfo>builder()
+ .add(
+ ParseFlagInfoImpl.flag1(
+ "--regex", "<regexp>", "Regular expression for parsing stack-trace-file as lines"))
+ .add(ParseFlagInfoImpl.flag0("--verbose", "Get verbose retraced output"))
+ .add(ParseFlagInfoImpl.flag0("--info", "Write information messages to stdout"))
+ .add(ParseFlagInfoImpl.flag0("--quiet", "Silence ordinary messages printed to stdout"))
+ .add(ParseFlagInfoImpl.flag0("--verify-mapping-file-hash", "Verify the mapping file hash"))
+ .build();
+ }
+
+ static String getUsageMessage() {
+ StringBuilder builder = new StringBuilder();
+ StringUtils.appendLines(builder, USAGE_MESSAGE);
+ new ParseFlagPrinter().addFlags(getFlags()).appendLinesToBuilder(builder);
+ return builder.toString();
+ }
private static RetraceCommand.Builder parseArguments(
String[] args, DiagnosticsHandler diagnosticsHandler) {
@@ -102,7 +124,7 @@
diagnosticsHandler.error(
new StringDiagnostic(
String.format("Too many arguments specified for builder at '%s'", context.head())));
- diagnosticsHandler.error(new StringDiagnostic(USAGE_MESSAGE));
+ diagnosticsHandler.error(new StringDiagnostic(getUsageMessage()));
throw new RetraceAbortException();
}
}
@@ -323,7 +345,7 @@
}
assert Arrays.asList(args).contains("--help");
System.out.println("Retrace " + Version.getVersionString());
- System.out.print(USAGE_MESSAGE);
+ System.out.print(getUsageMessage());
return;
}
builder.setRetracedStackTraceConsumer(
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 b1e37b4..36cfc16 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
@@ -185,7 +185,7 @@
public void testHelp() throws IOException {
ProcessResult processResult = runRetraceCommandLine(null, Arrays.asList("--help"));
assertEquals(0, processResult.exitCode);
- assertThat(processResult.stdout, containsString(Retrace.USAGE_MESSAGE));
+ assertThat(processResult.stdout, containsString(Retrace.getUsageMessage()));
}
@Test