Possibility to provide classpath dir. Updated help and documentation.
[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 NullParameter showHelp;
15     public TargetImageTypeParameter targetImageType;
16     public NullParameter keepDotFile;
17     public DirectoryParameter targetDirectory;
18     public DirectoryParameters classPaths;
19     public final boolean configurationOk;
20     public NullParameter hideOrphanedClasses;
21     Parser parser;
22
23     public static final String DEFAULT_GRAPH_NAME = "graph";
24
25     public CommandlineConfiguration(String[] args) {
26         parser = buildCommandlineParameterParser();
27         configurationOk = parser.parse(args);
28     }
29
30     public boolean isDebug() {
31         return showDebug.isSpecified();
32     }
33
34     public Parser buildCommandlineParameterParser() {
35         Parser parser = new Parser();
36
37         jarFiles = parser.add(
38                 new FileParameters("JAR file(s) to render."))
39                 .mustExist()
40                 .addAliases("-j");
41
42         classPaths = parser.add(
43                         new DirectoryParameters("Classpath directories"))
44                 .mustExist()
45                 .addAliases("-c");
46
47         graphName = parser.add(
48                 new StringParameter("Graph name. (default: \"" + DEFAULT_GRAPH_NAME + "\")", DEFAULT_GRAPH_NAME))
49                 .addAliases("-n");
50
51         showDebug = parser.add(
52                 new NullParameter("Show debug info."))
53                 .addAliases("--debug");
54
55         showHelp = parser.add(new NullParameter("Show commandline usage help."))
56                 .addAliases("-h", "--help");
57
58         keepDotFile = parser.add(
59                 new NullParameter("Keep dot file."))
60                 .addAliases("-k");
61
62         hideOrphanedClasses = parser.add(
63                 new NullParameter("Hide orphaned classes."))
64                 .addAliases("-ho");
65
66         whitelistGlob = parser.add(
67                 new StringParameters("Whitelist glob(s)."))
68                 .addAliases("-w");
69
70         blacklistGlob = parser.add(
71                 new StringParameters("Blacklist glob(s)."))
72                 .addAliases("-b");
73
74         rootClasses = parser.add(
75                         new StringParameters("root class(es)."))
76                 .addAliases("-r");
77
78
79         targetDirectory = parser.add(new DirectoryParameter("Target directory. " +
80                 "Default is current directory.").mustExist())
81                 .addAliases("-d");
82
83         targetImageType = parser.add(new TargetImageTypeParameter()).addAliases("-t");
84
85         return parser;
86     }
87
88 }