/* Copyright 2013 University of North Carolina at Chapel Hill. All rights reserved. */
package abra;
import java.io.IOException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
/**
* Abstract base class for helping with options parsing.
*
* @author Lisle E. Mose (lmose at unc dot edu)
*/
public abstract class Options {
protected static final String HELP = "help";
private OptionSet options;
protected void printHelp() {
try {
getOptionParser().printHelpOn(System.err);
}
catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("IOException encountered when attempting to output help.");
}
}
public void parseOptions(String[] args) {
try {
options = getOptionParser().parse(args);
if (options.has(HELP)) {
printHelp();
} else {
validate();
}
} catch (joptsimple.OptionException e) {
System.err.println(e.getMessage());
printHelp();
}
}
protected OptionSet getOptions() {
return options;
}
abstract protected OptionParser getOptionParser();
abstract protected void validate();
}