#!/usr/bin/env python # # Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import optparse import sys from util import build_utils from util import proguard_util def DoProguard(options): proguard = proguard_util.ProguardCmdBuilder(options.proguard_path) proguard.injars(build_utils.ParseGypList(options.input_paths)) proguard.configs(build_utils.ParseGypList(options.proguard_configs)) proguard.outjar(options.output_path) if options.mapping: proguard.mapping(options.mapping) if options.is_test: proguard.is_test(True) classpath = [] for arg in options.classpath: classpath += build_utils.ParseGypList(arg) classpath = list(set(classpath)) proguard.libraryjars(classpath) proguard.CheckOutput() return proguard.GetInputs() def main(args): args = build_utils.ExpandFileArgs(args) parser = optparse.OptionParser() build_utils.AddDepfileOption(parser) parser.add_option('--proguard-path', help='Path to the proguard executable.') parser.add_option('--input-paths', help='Paths to the .jar files proguard should run on.') parser.add_option('--output-path', help='Path to the generated .jar file.') parser.add_option('--proguard-configs', help='Paths to proguard configuration files.') parser.add_option('--mapping', help='Path to proguard mapping to apply.') parser.add_option('--is-test', action='store_true', help='If true, extra proguard options for instrumentation tests will be ' 'added.') parser.add_option('--classpath', action='append', help='Classpath for proguard.') parser.add_option('--stamp', help='Path to touch on success.') options, _ = parser.parse_args(args) inputs = DoProguard(options) if options.depfile: build_utils.WriteDepfile( options.depfile, inputs + build_utils.GetPythonDependencies()) if options.stamp: build_utils.Touch(options.stamp) if __name__ == '__main__': sys.exit(main(sys.argv[1:]))