Merge "Refactor minify-tool.py and add run_bootstrap_benchmark.py"
diff --git a/tools/minify-tool.py b/tools/minify_tool.py
similarity index 78%
rename from tools/minify-tool.py
rename to tools/minify_tool.py
index e5383f0..08b2ada 100755
--- a/tools/minify-tool.py
+++ b/tools/minify_tool.py
@@ -15,6 +15,7 @@
 import os
 import re
 import sys
+import time
 import toolhelper
 import utils
 import zipfile
@@ -28,17 +29,23 @@
 parser = argparse.ArgumentParser(description=__doc__.strip(),
                                  formatter_class=argparse.RawTextHelpFormatter)
 parser.add_argument(
-    '-i', '--input-jar',
+    '-i', '--input-jar', default=utils.R8_JAR,
     help='Input JAR to use (default: build/libs/r8.jar)')
 parser.add_argument(
     '-o', '--output-jar',
     help='Path to output JAR (default: build/libs/<MainClass>-min.jar)')
 parser.add_argument(
-    '-l', '--lib',
+    '-l', '--lib', default=RT,
     help='Path to rt.jar to use instead of OpenJDK 1.8')
 parser.add_argument(
     '-m', '--mainclass',
     help='Create/overwrite MANIFEST.MF with the given Main-Class')
+parser.add_argument(
+    '-O', '--no-debug', dest='debug', action='store_false',
+    help='Disable assertions when running R8')
+parser.add_argument(
+    '--print-runtimeraw', metavar='BENCHMARKNAME',
+    help='Print "<BENCHMARKNAME>(RunTimeRaw): <elapsed> ms" at the end')
 
 def generate_output_name(input_jar, mainclass):
   if not mainclass:
@@ -75,12 +82,10 @@
           'No --mainclass specified and no Main-Class in input JAR manifest.')
     return mo.group(1)
 
-def main():
-  args = parser.parse_args()
-  mainclass = args.mainclass
-  input_jar = args.input_jar or utils.R8_JAR
-  output_jar = args.output_jar or generate_output_name(input_jar, mainclass)
-  lib = args.lib or RT
+def minify_tool(mainclass=None, input_jar=utils.R8_JAR, output_jar=None, lib=RT,
+                debug=True, build=True, print_runtimeraw=None):
+  if output_jar is None:
+    output_jar = generate_output_name(input_jar, mainclass)
   with utils.TempDir() as path:
     if mainclass:
       tmp_input_path = os.path.join(path, 'input.jar')
@@ -97,7 +102,12 @@
             '--pg-conf', keep_path,
             '--release',
             tmp_input_path)
-    return toolhelper.run('r8', args)
+    start_time = time.time()
+    return_code = toolhelper.run('r8', args, debug=debug, build=build)
+    if print_runtimeraw:
+      elapsed_ms = 1000 * (time.time() - start_time)
+      print('%s-Total(RunTimeRaw): %s ms' % (print_runtimeraw, elapsed_ms))
+    return return_code
 
 if __name__ == '__main__':
-  sys.exit(main())
+  sys.exit(minify_tool(**vars(parser.parse_args())))
diff --git a/tools/run_bootstrap_benchmark.py b/tools/run_bootstrap_benchmark.py
new file mode 100755
index 0000000..0c608f9
--- /dev/null
+++ b/tools/run_bootstrap_benchmark.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+# Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+import argparse
+import minify_tool
+import os
+import sys
+import utils
+
+
+PINNED_R8_JAR = os.path.join(utils.REPO_ROOT, 'third_party/r8/r8.jar')
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+    '--print-runtimeraw', metavar='BENCHMARKNAME',
+    help='Print "<BENCHMARKNAME>(RunTimeRaw): <elapsed> ms" at the end')
+
+
+if __name__ == '__main__':
+  sys.exit(minify_tool.minify_tool(input_jar=PINNED_R8_JAR, debug=False,
+                                   build=False, **vars(parser.parse_args())))