X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2FMain.java;h=9b706d33415ef894fe12850e423976a48817dc89;hb=b5ce3bd895a6e6c2253e070cfce197a244c78c4c;hp=58963ff787039d9383c8bf7e0b7fbd10e004ac24;hpb=4aabbddd2f592ec80977a20cf2ad58cc3ede802b;p=javainspect.git diff --git a/src/main/java/eu/svjatoslav/inspector/java/Main.java b/src/main/java/eu/svjatoslav/inspector/java/Main.java index 58963ff..9b706d3 100644 --- a/src/main/java/eu/svjatoslav/inspector/java/Main.java +++ b/src/main/java/eu/svjatoslav/inspector/java/Main.java @@ -1,5 +1,6 @@ package eu.svjatoslav.inspector.java; +import eu.svjatoslav.inspector.java.commandline.CommandlineConfiguration; import eu.svjatoslav.inspector.java.structure.ClassGraph; import java.io.File; @@ -22,7 +23,16 @@ import static java.lang.System.getProperty; public class Main { public static void main(String[] args) throws IOException, ClassNotFoundException { CommandlineConfiguration configuration = new CommandlineConfiguration(args); + if (!configuration.configurationOk) + System.exit(1); + + getClassGraph(configuration).generateGraph(configuration.graphName.getValue()); + if (configuration.isDebug()) + System.out.println("Graph ready."); + } + + private static ClassGraph getClassGraph(CommandlineConfiguration configuration) throws IOException, ClassNotFoundException { List jarFiles = configuration.jarFiles.getValue(); URLClassLoader classLoader = new URLClassLoader( @@ -30,16 +40,32 @@ public class Main { configuration.getClass().getClassLoader()); ClassGraph classGraph = new ClassGraph(); - classGraph.setTargetDirectoryPath(getProperty("user.dir") + separator); - classGraph.setKeepDotFile(true); + + classGraph.setTargetDirectory(getTargetDirectory(configuration)); + + if (configuration.targetImageType.isSpecified()) + classGraph.setTargetImageType(configuration.targetImageType.getValue()); + + classGraph.setKeepDotFile(configuration.keepDotFile.getValue()); for (File jarFile : jarFiles) addJarToGraph(jarFile, classLoader, classGraph, configuration); - classGraph.generateGraph(configuration.graphName.getValue()); + configuration.blacklistGlob.getValue().forEach(classGraph::blacklistClassGlob); + configuration.whitelistGlob.getValue().forEach(classGraph::whitelistClassGlob); - if (configuration.isDebug()) - System.out.println("Graph ready."); + if (configuration.hideOrphanedClasses.getValue()) + classGraph.hideOrphanedClasses(); + + return classGraph; + } + + private static File getTargetDirectory(CommandlineConfiguration configuration) { + if (configuration.targetDirectory.isSpecified()) + return configuration.targetDirectory.getValue(); + + // default to current directory + return new File(getProperty("user.dir") + separator); } private static URL[] getFileUrls(List jarFiles) { @@ -74,7 +100,7 @@ public class Main { public static List getClassNamesFromJar(File jarFile) throws IOException { List result = new ArrayList<>(); try ( - JarInputStream jarInputStream = new JarInputStream(new FileInputStream(jarFile)); + JarInputStream jarInputStream = new JarInputStream(new FileInputStream(jarFile)) ) { while (true) { JarEntry jarEntry = jarInputStream.getNextJarEntry();