package jalview.bin.argparser;
+import java.util.Arrays;
+import java.util.List;
import java.util.Locale;
+import java.util.stream.Collectors;
public enum Arg
{
HELP("h"), CALCULATION, MENUBAR, STATUS, SHOWOVERVIEW, ANNOTATIONS,
COLOUR, FEATURES, GROOVY, GROUPS, HEADLESS, JABAWS, ANNOTATION,
- ANNOTATION2, DISPLAY, GUI, NEWS, NOQUESTIONNAIRE, SORTBYTREE, USAGESTATS,
- OPEN, OPEN2, PROPS, QUESTIONNAIRE, SETPROP, TREE, VDOC, VSESS, OUTPUT,
- OUTPUTTYPE, SSANNOTATION, NOTEMPFAC, TEMPFAC, TEMPFAC_LABEL, TEMPFAC_DESC,
+ ANNOTATION2, DISPLAY, GUI, NEWS, SORTBYTREE, USAGESTATS, OPEN, OPENNEW,
+ PROPS, QUESTIONNAIRE, SETPROP, TREE, VDOC, VSESS, OUTPUT, OUTPUTTYPE,
+ SSANNOTATION, NOTEMPFAC, TEMPFAC, TEMPFAC_LABEL, TEMPFAC_DESC,
TEMPFAC_SHADING, TITLE, PAEMATRIX, WRAP, NOSTRUCTURE, STRUCTURE, IMAGE,
QUIT, CLOSE, DEBUG("d"), QUIET("q"), ARGFILE, INCREMENT, NPP("n++"),
- SUBSTITUTIONS, NIL;
+ SUBSTITUTIONS, INITSUBSTITUTIONS, NIL, SPLASH, SETARGFILE, UNSETARGFILE;
protected static enum Opt
{
BOOLEAN, STRING, UNARY, MULTI, LINKED, NODUPLICATEVALUES, BOOTSTRAP,
- GLOB, NOACTION, ALLOWSUBSTITUTIONS
+ GLOB, NOACTION, ALLOWSUBSTITUTIONS, PRIVATE
}
static
{
HELP.setOptions(Opt.UNARY);
CALCULATION.setOptions(true, Opt.BOOLEAN); // default "true" implies only
- // expecting "--nocalculation"
+ // expecting "--nocalculation"
MENUBAR.setOptions(true, Opt.BOOLEAN);
STATUS.setOptions(true, Opt.BOOLEAN);
SHOWOVERVIEW.setOptions(Opt.UNARY, Opt.LINKED);
ANNOTATION2.setOptions(true, Opt.BOOLEAN, Opt.LINKED);
DISPLAY.setOptions(true, Opt.BOOLEAN);
GUI.setOptions(true, Opt.BOOLEAN);
- NEWS.setOptions(true, Opt.BOOLEAN);
- NOQUESTIONNAIRE.setOptions(Opt.UNARY); // unary as --questionnaire=val
- // expects a string value
+ NEWS.setOptions(true, Opt.BOOLEAN, Opt.BOOTSTRAP);
+ SPLASH.setOptions(true, Opt.BOOLEAN, Opt.BOOTSTRAP);
+ // expects a string value
SORTBYTREE.setOptions(true, Opt.BOOLEAN);
USAGESTATS.setOptions(true, Opt.BOOLEAN);
OPEN.setOptions(Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.GLOB,
Opt.ALLOWSUBSTITUTIONS);
- OPEN2.setOptions(Opt.STRING, Opt.LINKED, Opt.ALLOWSUBSTITUTIONS);
+ OPENNEW.setOptions(Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.GLOB,
+ Opt.ALLOWSUBSTITUTIONS);
PROPS.setOptions(Opt.STRING, Opt.BOOTSTRAP);
- QUESTIONNAIRE.setOptions(Opt.STRING);
- SETPROP.setOptions(Opt.STRING);
+ QUESTIONNAIRE.setOptions(Opt.BOOLEAN, Opt.BOOTSTRAP);
+ SETPROP.setOptions(Opt.STRING, Opt.MULTI, Opt.BOOTSTRAP);
TREE.setOptions(Opt.STRING);
VDOC.setOptions(Opt.UNARY);
INCREMENT.setOptions(Opt.UNARY, Opt.MULTI, Opt.NOACTION);
NPP.setOptions(Opt.UNARY, Opt.MULTI, Opt.NOACTION);
SUBSTITUTIONS.setOptions(Opt.BOOLEAN, Opt.MULTI, Opt.NOACTION);
+ INITSUBSTITUTIONS.setOptions(Opt.BOOLEAN, Opt.BOOTSTRAP, Opt.NOACTION);
NIL.setOptions(Opt.UNARY, Opt.LINKED, Opt.MULTI, Opt.NOACTION);
- // BOOTSTRAP args are parsed before a full parse of arguments and
- // so are accessible at an earlier stage to (e.g.) set debug log level,
- // provide a props file (that might set log level), run headlessly, read
- // an argfile instead of other args.
+ SETARGFILE.setOptions(Opt.STRING, Opt.MULTI, Opt.PRIVATE, Opt.NOACTION);
+ UNSETARGFILE.setOptions(Opt.MULTI, Opt.PRIVATE, Opt.NOACTION);
+ // Opt.BOOTSTRAP args are parsed (not linked with no SubVals so using a
+ // simplified parser, see jalview.bin.argparser.BootstrapArgs)
+ // before a full parse of arguments and so can be accessible at an earlier
+ // stage to (e.g.) set debug log level, provide a props file (that might set
+ // log level), run headlessly, read an argfile instead of other args.
}
private final String[] argNames;
private boolean defaultBoolValue = false;
- public String toLongString()
- {
- StringBuilder sb = new StringBuilder();
- sb.append("Arg: ").append(this.name());
- for (String name : getNames())
- {
- sb.append(", '").append(name).append("'");
- }
- sb.append("\nOptions: ");
- boolean first = true;
- for (Opt o : argOptions)
- {
- if (!first)
- {
- sb.append(", ");
- }
- sb.append(o.toString());
- first = false;
- }
- sb.append("\n");
- return sb.toString();
- }
-
private Arg()
{
this(new String[0]);
System.arraycopy(names, 0, this.argNames, 1, names.length);
}
+ public String argString()
+ {
+ return new StringBuilder(ArgParser.DOUBLEDASH).append(getName())
+ .toString();
+ }
+
+ public String toLongString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append(this.getClass().getName()).append('.').append(this.name());
+ sb.append('(');
+ if (getNames().length > 0)
+ sb.append('"');
+ sb.append(String.join("\", \"", getNames()));
+ if (getNames().length > 0)
+ sb.append('"');
+ sb.append(")\n");
+ sb.append("\nOpt: ");
+ // map List<Opt> to List<String> for the String.join
+ List<String> optList = Arrays.asList(argOptions).stream()
+ .map(opt -> opt.name()).collect(Collectors.toList());
+ sb.append(String.join(", ", optList));
+ sb.append("\n");
+ return sb.toString();
+ }
+
public String[] getNames()
{
return argNames;