diff options
author | Yohann Roussel <yroussel@google.com> | 2015-02-26 15:26:01 +0100 |
---|---|---|
committer | Yohann Roussel <yroussel@google.com> | 2015-03-03 11:12:03 +0100 |
commit | 4f8680254dd1ecee7baeb9a6efb2803410473468 (patch) | |
tree | c748d2b8cdbe5e3a3470001f708fffb5dc400e52 | |
parent | 495cd9a269582491927e37ad76077cd115d58a8b (diff) | |
download | toolchain_jack-4f8680254dd1ecee7baeb9a6efb2803410473468.zip toolchain_jack-4f8680254dd1ecee7baeb9a6efb2803410473468.tar.gz toolchain_jack-4f8680254dd1ecee7baeb9a6efb2803410473468.tar.bz2 |
Use properties for jarjar rules control
Change-Id: I90e9daf18c1a3d40a562e33afc8ca14420d7db61
-rw-r--r-- | jack/src/com/android/jack/Jack.java | 2 | ||||
-rw-r--r-- | jack/src/com/android/jack/Options.java | 17 | ||||
-rw-r--r-- | jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java | 18 | ||||
-rw-r--r-- | jack/src/com/tonicsystems/jarjar/RulesFileParser.java | 9 | ||||
-rw-r--r-- | jack/tests/com/android/jack/TestTools.java | 2 |
5 files changed, 22 insertions, 26 deletions
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java index 23f7327..5a39401 100644 --- a/jack/src/com/android/jack/Jack.java +++ b/jack/src/com/android/jack/Jack.java @@ -457,7 +457,7 @@ public abstract class Jack { if (sanityChecks) { request.addFeature(SanityChecks.class); } - if (options.jarjarRulesFile != null) { + if (config.get(PackageRenamer.JARJAR_ENABLED).booleanValue()) { request.addFeature(Jarjar.class); } if (options.dxLegacy) { diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java index d68c978..8298168 100644 --- a/jack/src/com/android/jack/Options.java +++ b/jack/src/com/android/jack/Options.java @@ -258,7 +258,7 @@ public class Options { @Option(name = "--config-jarjar", usage = "use a jarjar rules file (default: none)", metaVar = "<FILE>") - protected File jarjarRulesFile = null; + private File jarjarRulesFile = null; @Option(name = "--import", usage = "import the given file into the output (repeatable)", metaVar = "<FILE>") @@ -524,7 +524,8 @@ public class Options { configBuilder.set(VERBOSITY_LEVEL, verbose); if (jarjarRulesFile != null) { - configBuilder.set(PackageRenamer.JARJAR_FILE, jarjarRulesFile); + configBuilder.set(PackageRenamer.JARJAR_ENABLED, true); + configBuilder.setString(PackageRenamer.JARJAR_FILE, jarjarRulesFile.getPath()); } configBuilder.pushDefaultLocation(new StringLocation("proguard flags")); @@ -753,18 +754,6 @@ public class Options { throw new IllegalOptionsException( "Impossible to emit synthetic debug info when not emitting debug info"); } - - if (jarjarRulesFile != null) { - if (!jarjarRulesFile.exists()) { - throw new IllegalOptionsException("The specified rules file '" - + jarjarRulesFile.getPath() + "' for package renaming does not exist."); - } - - if (!jarjarRulesFile.canRead()) { - throw new IllegalOptionsException("The specified rules file '" - + jarjarRulesFile.getPath() + "' for package renaming cannot be read."); - } - } } public void setJayceOutputDir(@Nonnull File outputDir) { diff --git a/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java b/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java index a3b62a7..4151da5 100644 --- a/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java +++ b/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java @@ -38,17 +38,18 @@ import com.android.sched.item.Name; import com.android.sched.schedulable.RunnableSchedulable; import com.android.sched.schedulable.Support; import com.android.sched.schedulable.Transform; -import com.android.sched.util.codec.PathCodec; +import com.android.sched.util.codec.InputStreamCodec; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.ThreadConfig; +import com.android.sched.util.config.id.BooleanPropertyId; import com.android.sched.util.config.id.PropertyId; +import com.android.sched.util.file.InputStreamFile; import com.android.sched.vfs.VPath; import com.tonicsystems.jarjar.PackageRemapper; import com.tonicsystems.jarjar.PatternElement; import com.tonicsystems.jarjar.RulesFileParser; import com.tonicsystems.jarjar.Wildcard; -import java.io.File; import java.util.List; import java.util.Stack; @@ -65,12 +66,17 @@ import javax.annotation.Nonnull; public class PackageRenamer implements RunnableSchedulable<JSession>{ @Nonnull - public static final PropertyId<File> JARJAR_FILE = PropertyId.create( - "jack.jarjar.file", "The jarjar rules file", new PathCodec()) - .addDefaultValue("jarjar.txt"); + public static final BooleanPropertyId JARJAR_ENABLED = BooleanPropertyId.create( + "jack.repackaging", "Enable repackaging") + .addDefaultValue(false); @Nonnull - private final File jarjarRulesFile = ThreadConfig.get(JARJAR_FILE); + public static final PropertyId<InputStreamFile> JARJAR_FILE = PropertyId.create( + "jack.repackaging.file", "Jarjar rules file", new InputStreamCodec()) + .requiredIf(JARJAR_ENABLED.getValue().isTrue()); + + @Nonnull + private final InputStreamFile jarjarRulesFile = ThreadConfig.get(JARJAR_FILE); private static class Visitor extends JVisitor { diff --git a/jack/src/com/tonicsystems/jarjar/RulesFileParser.java b/jack/src/com/tonicsystems/jarjar/RulesFileParser.java index 83e25f3..b0e772a 100644 --- a/jack/src/com/tonicsystems/jarjar/RulesFileParser.java +++ b/jack/src/com/tonicsystems/jarjar/RulesFileParser.java @@ -16,10 +16,11 @@ package com.tonicsystems.jarjar; +import com.android.sched.util.file.InputStreamFile; + import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.Arrays; @@ -31,8 +32,8 @@ import java.util.List; public class RulesFileParser { private RulesFileParser() {} - public static List<PatternElement> parse(File file) throws IOException { - return parse(new FileReader(file)); + public static List<PatternElement> parse(InputStreamFile file) throws IOException { + return parse(new InputStreamReader(file.getInputStream())); } public static List<PatternElement> parse(String value) throws IOException { diff --git a/jack/tests/com/android/jack/TestTools.java b/jack/tests/com/android/jack/TestTools.java index da69c2c..99aec20 100644 --- a/jack/tests/com/android/jack/TestTools.java +++ b/jack/tests/com/android/jack/TestTools.java @@ -261,7 +261,7 @@ public class TestTools { public static Options buildCommandLineArgs(@Nonnull File fileOrSourcelist, @CheckForNull File jarjarRules) throws IOException { Options options = buildCommandLineArgs(null /* classpath */, new File[] {fileOrSourcelist}); - options.jarjarRulesFile = jarjarRules; + options.setJarjarRulesFile(jarjarRules); return options; } |