Support for force enabling/disabling shrinker options in run_on_app_dump.py

Change-Id: I35dca1c12b711e2183ac55cfb8b048d3c9a13126
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 98c9489..a810cdc 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -38,6 +38,24 @@
     help='Compiler to use',
     default=None)
   parser.add_argument(
+    '--minify',
+    help='Force enable/disable minification'
+      ' (defaults to app proguard config)',
+    choices=['default', 'force-enable', 'force-disable'],
+    default='default')
+  parser.add_argument(
+    '--optimize',
+    help='Force enable/disable optimizations'
+      ' (defaults to app proguard config)',
+    choices=['default', 'force-enable', 'force-disable'],
+    default='default')
+  parser.add_argument(
+    '--shrink',
+    help='Force enable/disable shrinking'
+      ' (defaults to app proguard config)',
+    choices=['default', 'force-enable', 'force-disable'],
+    default='default')
+  parser.add_argument(
     '-v',
     '--version',
     help='Compiler version to use (default read from dump version file).'
@@ -281,17 +299,39 @@
   return dest
 
 
-def clean_config(file):
+def clean_config(file, args):
   with open(file) as f:
     lines = f.readlines()
+  minify = args.minify
+  optimize = args.optimize
+  shrink = args.shrink
   with open(file, 'w') as f:
+    if minify == 'force-disable':
+      print('Adding config line: -dontobfuscate')
+      f.write('-dontobfuscate\n')
+    if optimize == 'force-disable':
+      print('Adding config line: -dontoptimize')
+      f.write('-dontoptimize\n')
+    if shrink == 'force-disable':
+      print('Adding config line: -dontshrink')
+      f.write('-dontshrink\n')
     for line in lines:
-      if ('-injars' not in line and '-libraryjars' not in line and
-          '-print' not in line):
-        f.write(line)
-      else:
+      if clean_config_line(line, minify, optimize, shrink):
         print('Removing from config line: \n%s' % line)
+      else:
+        f.write(line)
 
+def clean_config_line(line, minify, optimize, shrink):
+  if ('-injars' in line or '-libraryjars' in line or
+      '-print' in line):
+    return True
+  if minify == 'force-enable' and '-dontobfuscate' in line:
+    return True
+  if optimize == 'force-enable' and '-dontoptimize' in line:
+    return True
+  if shrink == 'force-enable' and '-dontshrink' in line:
+    return True
+  return False
 
 def prepare_wrapper(dist, temp, jdkhome):
   wrapper_file = os.path.join(
@@ -376,7 +416,7 @@
       else:
         # If we get a dump from the wild we can't use -injars, -libraryjars or
         # -print{mapping,usage}
-        clean_config(dump.config_file())
+        clean_config(dump.config_file(), args)
       cmd.extend(['--pg-conf', dump.config_file()])
     if dump.main_dex_rules_resource():
       cmd.extend(['--main-dex-rules', dump.main_dex_rules_resource()])