Home | History | Annotate | Download | only in gyp
      1 #!/usr/bin/env python
      2 #
      3 # Copyright 2013 The Chromium Authors. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 import fnmatch
      8 import optparse
      9 import os
     10 import sys
     11 
     12 from util import build_utils
     13 
     14 def DoProguard(options):
     15   injars = options.input_path
     16   outjars = options.output_path
     17   classpath = build_utils.ParseGypList(options.classpath)
     18   classpath = list(set(classpath))
     19   libraryjars = ':'.join(classpath)
     20   # proguard does its own dependency checking, which can be avoided by deleting
     21   # the output.
     22   if os.path.exists(options.output_path):
     23     os.remove(options.output_path)
     24   proguard_cmd = [options.proguard_path,
     25                   '-injars', injars,
     26                   '-outjars', outjars,
     27                   '-libraryjars', libraryjars,
     28                   '@' + options.proguard_config]
     29   build_utils.CheckOutput(proguard_cmd, print_stdout=True)
     30 
     31 
     32 def main(argv):
     33   parser = optparse.OptionParser()
     34   parser.add_option('--proguard-path',
     35                     help='Path to the proguard executable.')
     36   parser.add_option('--input-path',
     37                     help='Path to the .jar file proguard should run on.')
     38   parser.add_option('--output-path', help='Path to the generated .jar file.')
     39   parser.add_option('--proguard-config',
     40                     help='Path to the proguard configuration file.')
     41   parser.add_option('--classpath', help="Classpath for proguard.")
     42   parser.add_option('--stamp', help='Path to touch on success.')
     43 
     44   # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
     45   parser.add_option('--ignore', help='Ignored.')
     46 
     47   options, _ = parser.parse_args()
     48 
     49   DoProguard(options)
     50 
     51   if options.stamp:
     52     build_utils.Touch(options.stamp)
     53 
     54 
     55 if __name__ == '__main__':
     56   sys.exit(main(sys.argv))
     57