summaryrefslogtreecommitdiffstats
path: root/jill/src/com/android/jill/Jill.java
diff options
context:
space:
mode:
Diffstat (limited to 'jill/src/com/android/jill/Jill.java')
-rw-r--r--jill/src/com/android/jill/Jill.java78
1 files changed, 47 insertions, 31 deletions
diff --git a/jill/src/com/android/jill/Jill.java b/jill/src/com/android/jill/Jill.java
index f32dd18..35c5c18 100644
--- a/jill/src/com/android/jill/Jill.java
+++ b/jill/src/com/android/jill/Jill.java
@@ -21,8 +21,10 @@ import com.android.jill.utils.FileUtils;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
+import java.util.Properties;
import java.util.jar.JarFile;
import javax.annotation.Nonnull;
@@ -33,50 +35,64 @@ import javax.annotation.Nonnull;
public class Jill {
@Nonnull
- private final Options options;
+ private static final String PROPERTIES_FILE = "jill.properties";
- @Nonnull
- private final String version;
-
- public Jill(@Nonnull Options options, @Nonnull String version) {
- this.options = options;
- this.version = version;
- }
- public void process(@Nonnull File binaryFile) {
+ public static void process(@Nonnull Options options) {
+ File binaryFile = options.getBinaryFile();
+ JavaTransformer jt = new JavaTransformer(getVersion(), options);
if (binaryFile.isFile()) {
if (FileUtils.isJavaBinaryFile(binaryFile)) {
- processJavaBinary(binaryFile);
+ List<File> javaBinaryFiles = new ArrayList<File>();
+ javaBinaryFiles.add(binaryFile);
+ jt.transform(javaBinaryFiles);
} else if (FileUtils.isJarFile(binaryFile)) {
- try {
- processJarFile(new JarFile(binaryFile));
- } catch (IOException e) {
- throw new JillException("Fails to create jar file " + binaryFile.getName(), e);
- }
+ try {
+ jt.transform(new JarFile(binaryFile));
+ } catch (IOException e) {
+ throw new JillException("Fails to create jar file " + binaryFile.getName(), e);
+ }
} else {
throw new JillException("Unsupported file type: " + binaryFile.getName());
}
} else {
- processFolder(binaryFile);
+ List<File> javaBinaryFiles = new ArrayList<File>();
+ FileUtils.getJavaBinaryFiles(binaryFile, javaBinaryFiles);
+ jt.transform(javaBinaryFiles);
}
}
- private void processJavaBinary(@Nonnull File javaBinaryFile) {
- assert javaBinaryFile.isFile();
- List<File> javaBinaryFiles = new ArrayList<File>();
- javaBinaryFiles.add(javaBinaryFile);
- new JavaTransformer(version, options).transform(javaBinaryFiles);
- }
+ @Nonnull
+ public static String getVersion() {
+ String version = "Unknown (problem with " + PROPERTIES_FILE + " resource file)";
- private void processJarFile(@Nonnull JarFile jarFile) {
- new JavaTransformer(version, options).transform(jarFile);
- }
+ InputStream is = Main.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE);
+ if (is != null) {
+ Properties prop = new Properties();
+ try {
+ prop.load(is);
+ String rawVersion = prop.getProperty("jill.version");
+ if (rawVersion != null) {
+ version = rawVersion;
- private void processFolder(@Nonnull File folder) {
- assert folder.isDirectory();
- List<File> javaBinaryFiles = new ArrayList<File>();
- FileUtils.getJavaBinaryFiles(folder, javaBinaryFiles);
- new JavaTransformer(version, options).transform(javaBinaryFiles);
- }
+ String codeName = prop.getProperty("jill.version.codename");
+ if (codeName != null) {
+ version += " \'" + codeName + '\'';
+ }
+ String bid = prop.getProperty("jill.version.buildid", "engineering");
+ String sha = prop.getProperty("jill.version.sha");
+ if (sha != null) {
+ version += " (" + bid + ' ' + sha + ')';
+ } else {
+ version += " (" + bid + ')';
+ }
+ }
+ } catch (IOException e) {
+ // Return default version
+ }
+ }
+
+ return version;
+ }
}