package eu.svjatoslav.inspector.java;
+import eu.svjatoslav.inspector.java.commandline.CommandlineConfiguration;
import eu.svjatoslav.inspector.java.structure.ClassGraph;
import java.io.File;
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(
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) {