package org.rascalmpl.interpreter.staticErrors; import org.rascalmpl.interpreter.result.AbstractFunction; import org.rascalmpl.value.type.Type; import org.rascalmpl.value.type.TypeFactory; public class CommandlineError extends RuntimeException { private static final long serialVersionUID = -5679812063174925071L; private final AbstractFunction main; public CommandlineError(String message, AbstractFunction main) { super(message); this.main = main; } public String help(String command) { TypeFactory tf = TypeFactory.getInstance(); StringBuilder b = new StringBuilder(); b.append("Usage: "); b.append(command); Type kwargs = main.getKeywordArgumentTypes(main.getEnv()); if (kwargs.getArity() > 1) { b.append(" [options]\n\nOptions:\n"); for (String param : kwargs.getFieldNames()) { b.append("\t-"); b.append(param); if (kwargs.getFieldType(param).isSubtypeOf(tf.boolType())) { b.append("\t[arg]: one of nothing (true), \'1\', \'0\', \'true\' or \'false\';\n"); } else { b.append("\t[arg]: " + kwargs.getFieldType(param) + " argument;\n"); } } } else { b.append('\n'); } return b.toString(); } }