Added ability to specify root classes.
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / commandline / CommandlineConfiguration.java
1 package eu.svjatoslav.inspector.java.commandline;
2
3 import eu.svjatoslav.commons.commandline.parameterparser.Parser;
4 import eu.svjatoslav.commons.commandline.parameterparser.parameter.*;
5
6 public class CommandlineConfiguration {
7
8     public FileParameters jarFiles;
9     public StringParameter graphName;
10     private NullParameter showDebug;
11     public StringParameters whitelistGlob;
12     public StringParameters blacklistGlob;
13     public StringParameters rootClasses;
14     public TargetImageTypeParameter targetImageType;
15     public NullParameter keepDotFile;
16     public DirectoryParameter targetDirectory;
17     public final boolean configurationOk;
18     public NullParameter hideOrphanedClasses;
19
20     public static final String DEFAULT_GRAPH_NAME = "graph";
21
22     public CommandlineConfiguration(String[] args) {
23         Parser parser = buildCommandlineParameterParser();
24         configurationOk = parser.parse(args);
25         if (!configurationOk)
26             parser.showHelp();
27     }
28
29     public boolean isDebug() {
30         return showDebug.isSpecified();
31     }
32
33     public Parser buildCommandlineParameterParser() {
34         Parser parser = new Parser();
35
36         jarFiles = parser.add(
37                 new FileParameters("JAR file(s) to render."))
38                 .mustExist()
39                 .addAliases("-j");
40
41         graphName = parser.add(
42                 new StringParameter("Graph name. (default: \"" + DEFAULT_GRAPH_NAME + "\")", DEFAULT_GRAPH_NAME))
43                 .addAliases("-n");
44
45         showDebug = parser.add(
46                 new NullParameter("Show debug info."))
47                 .addAliases("--debug");
48
49         keepDotFile = parser.add(
50                 new NullParameter("Keep dot file."))
51                 .addAliases("-k");
52
53         hideOrphanedClasses = parser.add(
54                 new NullParameter("Hide orphaned classes."))
55                 .addAliases("-h");
56
57         whitelistGlob = parser.add(
58                 new StringParameters("Whitelist glob(s)."))
59                 .addAliases("-w");
60
61         blacklistGlob = parser.add(
62                 new StringParameters("Blacklist glob(s)."))
63                 .addAliases("-b");
64
65         rootClasses = parser.add(
66                         new StringParameters("root class(es)."))
67                 .addAliases("-r");
68
69
70         targetDirectory = parser.add(new DirectoryParameter("Target directory. " +
71                 "Default is current directory.").mustExist())
72                 .addAliases("-d");
73
74         targetImageType = parser.add(new TargetImageTypeParameter()).addAliases("-t");
75
76         return parser;
77     }
78
79 }