Added all important commandline options. Updated documentation.
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / Main.java
index 4f6bfbf..9b706d3 100644 (file)
@@ -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<File> 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<File> jarFiles) {