package org.kohsuke.args4j;
import org.kohsuke.args4j.spi.OptionHandler;
/**
* Run-time copy of the Option or Argument annotation. By definition, unnamed options
* are arguments (and instances of this class). Named options are actually a subclass.
*
* @author Mark Sinke
*/
public class OptionDef {
private final String usage;
private final String metaVar;
private final boolean required;
private final boolean multiValued;
private final Class<? extends OptionHandler> handler;
public OptionDef(Argument a, boolean forceMultiValued) {
this(a.usage(), a.metaVar(), a.required(), a.handler(), a.multiValued() || forceMultiValued);
}
protected OptionDef(String usage, String metaVar, boolean required,
Class<? extends OptionHandler> handler, boolean multiValued) {
this.usage = usage;
this.metaVar = metaVar;
this.required = required;
this.handler = handler;
this.multiValued = multiValued;
}
public String usage() {
return usage;
}
public String metaVar() {
return metaVar;
}
public boolean required() {
return required;
}
public Class<? extends OptionHandler> handler() {
return handler;
}
public boolean isMultiValued() {
return multiValued;
}
public boolean isArgument() {
return true;
}
@Override
public String toString() {
return metaVar() != null ? metaVar() : "ARG";
}
}