Utility scripts for shrinkers.

Bug: 160420801
Change-Id: I61e475a0221f08ce6ca3d476659b2201e7aea454
diff --git a/tools/keeprule_benchmark.py b/tools/keeprule_benchmark.py
index 7e7f47c..0a7e063 100755
--- a/tools/keeprule_benchmark.py
+++ b/tools/keeprule_benchmark.py
@@ -10,10 +10,11 @@
 import time
 
 import jdk
+import proguard
 import toolhelper
 import utils
 
-SHRINKERS = ['r8', 'pg']
+SHRINKERS = ['r8'] + proguard.getVersions()
 
 INPUT_PROGRAM = utils.PINNED_R8_JAR
 
@@ -153,6 +154,9 @@
     self.size = size
     self.runs = runs
 
+def isPG(shrinker):
+  return proguard.isValidVersion(shrinker)
+
 def shrinker_args(shrinker, keepfile, output):
   if shrinker == 'r8':
     return [
@@ -165,17 +169,16 @@
       '--min-api', '10000',
       '--pg-conf', keepfile,
       ]
-  elif shrinker == 'pg':
-    return [
-      jdk.GetJavaExecutable(),
-      '-jar', utils.PROGUARD_JAR,
+  elif isPG(shrinker):
+    return proguard.getCmd([
       '-injars', INPUT_PROGRAM,
       '-libraryjars', utils.RT_JAR,
       '-outjars', output,
       '-dontwarn', '**',
       '-optimizationpasses', '2',
       '@' + keepfile,
-    ]
+    ],
+    version=shrinker)
   else:
     assert False, "Unexpected shrinker " + shrinker
 
@@ -219,7 +222,7 @@
       subprocess.check_output(cmd)
       t1 = time.time()
       benchmark_runs.append(t1 - t0)
-      if options.shrinker == 'pg':
+      if isPG(options.shrinker):
         dexout = os.path.join(temp, '%s-out%d-dex.jar' % (name, i))
         dex(out, dexout)
         benchmark_size = utils.uncompressed_size(dexout)