Skip to content

Commit 7f2206d

Browse files
baltzelltongtongcao
authored andcommitted
add -v option (#681)
* add -v option * add a properties file and install it as a resource * use properties file for version printout * stop hiding default arguments
1 parent 3c5fb77 commit 7f2206d

File tree

3 files changed

+50
-14
lines changed

3 files changed

+50
-14
lines changed

common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import java.util.ArrayList;
44
import java.util.Arrays;
5+
import java.util.HashSet;
56
import java.util.List;
67
import java.util.Map;
8+
import java.util.Properties;
79
import java.util.Set;
810
import java.util.TreeMap;
911
import java.util.logging.Level;
@@ -18,12 +20,12 @@ public class OptionParser {
1820
private Map<String,OptionValue> optionsDescriptors = new TreeMap<>();
1921
private Map<String,OptionValue> requiredOptions = new TreeMap<>();
2022
private Map<String,OptionValue> parsedOptions = new TreeMap<>();
23+
private Set<String> overridenOptions = new HashSet<>();
2124
private List<String> parsedInputList = new ArrayList<>();
2225
private String program = "undefined";
2326
private boolean requiresInputList = true;
2427
private String programDescription = "";
25-
private boolean overrideVerbosity = false;
26-
28+
2729
public OptionParser(){
2830
init();
2931
}
@@ -34,9 +36,11 @@ public OptionParser(String pname){
3436
}
3537

3638
private void init() {
37-
addOption("-v","FINE","logging verbosity level");
39+
addOption("-l","FINE","logging verbosity level");
40+
addOption("-v",null,"print version");
41+
addOption("-h",null,"print help");
3842
}
39-
43+
4044
public void setDescription(String desc){
4145
this.programDescription = desc;
4246
}
@@ -53,7 +57,7 @@ public void addRequired(String key){
5357
private void check(String key, Set<String> keys) {
5458
if (keys.contains(key)) {
5559
System.out.println("WARNING: overriding OptionParser option: "+key);
56-
if (key.equals("-v")) overrideVerbosity = true;
60+
overridenOptions.add(key);
5761
}
5862
}
5963

@@ -130,17 +134,21 @@ public void printUsage(){
130134
System.out.println(this.getUsageString());
131135
System.out.println("\n\n");
132136
}
133-
134-
public void parse(String[] args){
137+
138+
public void parse(String... args) {
135139

136140
List<String> arguments = new ArrayList<>();
137141
arguments.addAll(Arrays.asList(args));
138142

139-
// Default, non-overridable, help option:
140-
if(this.containsOptions(arguments, "-h","-help")==true){
143+
// Default, non-overridable, options:
144+
if(this.containsOptions(arguments,"-h","-help")==true){
141145
this.printUsage();
142146
System.exit(0);
143147
}
148+
else if(this.containsOptions(arguments,"-v","-version")==true){
149+
System.out.println(getVersion());
150+
System.exit(0);
151+
}
144152

145153
// Parse required options:
146154
for(Map.Entry<String,OptionValue> entry : this.requiredOptions.entrySet()){
@@ -173,8 +181,8 @@ public void parse(String[] args){
173181
}
174182

175183
// Configure logger:
176-
if (!overrideVerbosity) {
177-
setVerbosity(this.parsedOptions.get("-v").stringValue());
184+
if (!overridenOptions.contains("-l")) {
185+
setVerbosity(this.parsedOptions.get("-l").stringValue());
178186
}
179187
}
180188

@@ -183,26 +191,40 @@ private void setVerbosity(String level) {
183191
DefaultLogger.initialize(Level.parse(level));
184192
}
185193
catch (IllegalArgumentException e) {
186-
System.err.println("Invalid -v java.util.logging.Level: "+level);
194+
System.err.println("Invalid -l java.util.logging.Level: "+level);
187195
System.exit(102);
188196
}
189197
catch (NullPointerException e) {
190-
System.err.println("Unavailable -v COATJAVA logging level: "+level);
198+
System.err.println("Unavailable -l COATJAVA logging level: "+level);
191199
System.exit(103);
192200
}
193201
}
194202

195203
public List<String> getInputList(){
196204
return this.parsedInputList;
197205
}
206+
207+
public static String getVersion(){
208+
try {
209+
Properties p = new Properties();
210+
p.load(OptionParser.class.getResourceAsStream("/pom.properties"));
211+
return String.format("coatjava version %s",p.getProperty("version"));
212+
} catch (Exception e) {
213+
return "coatjava version ???";
214+
}
215+
}
198216

199217
public static void main(String[] args){
200218
OptionParser parser = new OptionParser();
201219
parser.addRequired("-o");
202220
parser.addOption("-r", "10");
203221
parser.addOption("-t", "25.0");
204222
parser.addOption("-d", "35");
205-
parser.parse(args);
223+
parser.addOption("-h","helpless");
224+
parser.addOption("-v","versionless");
225+
if (args.length == 0) parser.parse("-o","out.dat","in.dat");
226+
else parser.parse(args);
206227
parser.show();
228+
parser.parse("-h");
207229
}
208230
}

common-tools/coat-libs/pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,17 @@
169169
</dependencies>
170170

171171
<build>
172+
173+
<resources>
174+
<resource>
175+
<directory>src/main/resources</directory>
176+
<filtering>true</filtering>
177+
<includes>
178+
<include>**/pom.properties</include>
179+
</includes>
180+
</resource>
181+
</resources>
182+
172183
<plugins>
173184

174185
<!-- create shaded coat-libs JAR -->
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
artifactId=${project.artifactId}
2+
groupId=${project.groupId}
3+
version=${project.version}

0 commit comments

Comments
 (0)