Added all important commandline options. Updated documentation.
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / commandline / CommandlineConfiguration.java
diff --git a/src/main/java/eu/svjatoslav/inspector/java/commandline/CommandlineConfiguration.java b/src/main/java/eu/svjatoslav/inspector/java/commandline/CommandlineConfiguration.java
new file mode 100644 (file)
index 0000000..933a95d
--- /dev/null
@@ -0,0 +1,72 @@
+package eu.svjatoslav.inspector.java.commandline;
+
+import eu.svjatoslav.commons.commandline.parameterparser.Parser;
+import eu.svjatoslav.commons.commandline.parameterparser.parameter.*;
+
+public class CommandlineConfiguration {
+
+    public FileParameters jarFiles;
+    public StringParameter graphName;
+    private NullParameter showDebug;
+    public StringParameters whitelistGlob;
+    public StringParameters blacklistGlob;
+    public TargetImageTypeParameter targetImageType;
+    public NullParameter keepDotFile;
+    public DirectoryParameter targetDirectory;
+    public final boolean configurationOk;
+    public NullParameter hideOrphanedClasses;
+
+    public CommandlineConfiguration(String args[]) {
+        Parser parser = buildCommandlineParameterParser();
+        configurationOk = parser.parse(args);
+        if (!configurationOk)
+            parser.showHelp();
+    }
+
+    public boolean isDebug() {
+        return showDebug.isSpecified();
+    }
+
+    public Parser buildCommandlineParameterParser() {
+        Parser parser = new Parser();
+
+        jarFiles = parser.add(
+                new FileParameters("JAR file(s) to render."))
+                .mustExist()
+                .addAliases("-j");
+
+        graphName = parser.add(
+                new StringParameter("Graph name."))
+                .setMandatory()
+                .addAliases("-n");
+
+        showDebug = parser.add(
+                new NullParameter("Show debug info."))
+                .addAliases("--debug");
+
+        keepDotFile = parser.add(
+                new NullParameter("Keep dot file."))
+                .addAliases("-k");
+
+        hideOrphanedClasses = parser.add(
+                new NullParameter("Hide orphaned classes."))
+                .addAliases("-h");
+
+        whitelistGlob = parser.add(
+                new StringParameters("Whitelist glob(s)."))
+                .addAliases("-w");
+
+        blacklistGlob = parser.add(
+                new StringParameters("Blacklist glob(s)."))
+                .addAliases("-b");
+
+        targetDirectory = parser.add(new DirectoryParameter("Target directory. " +
+                "Default is current directory.").mustExist())
+                .addAliases("-d");
+
+        targetImageType = parser.add(new TargetImageTypeParameter()).addAliases("-t");
+
+        return parser;
+    }
+
+}