By
passing null argument to 'setOptionComparator' method of HelpFormatter class,
you can print the help of given command in the order they specified.
public void
setOptionComparator(Comparator<Option> comparator)
Set
the comparator used to sort the options when they output in help text. Passing
in a null comparator will keep the options in the order they were declared.
OptionDemo.java
import java.io.OutputStream; import java.io.PrintWriter; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; public class OptionDemo { public static void printHelp(final Options options, final int width, final String cmdLineSyntax, final String header, final String footer, final int leftPad, final int descPad, final boolean autoUsage, final OutputStream out) { PrintWriter writer = new PrintWriter(out); final HelpFormatter helpFormatter = new HelpFormatter(); helpFormatter.setOptionComparator(null); helpFormatter.printHelp(writer, width, cmdLineSyntax, header, options, leftPad, descPad, footer, autoUsage); writer.flush(); } public static void main(String args[]) { Option option1 = Option.builder("A").longOpt("almost-all").desc("do not list implied . and ..").hasArg(false) .build(); Option option2 = Option.builder("b").longOpt("block-size").argName("SIZE> <CAPACITY> <LINE").numberOfArgs(3) .desc("use SIZE-byte blocks").hasArg(true).build(); Option option3 = Option.builder("c") .desc("with -lt: sort by, and show, ctime (time of last modification of file status information) with -l:show ctime and sort by name otherwise: sort by ctime") .hasArg(false).build(); Options options = new Options(); options.addOption(option1); options.addOption(option2); options.addOption(Option.builder().longOpt("escape").desc("print octal escapes for nongraphic characters") .hasArg(false).build()); options.addOption(option3); printHelp(options, 100, "ls", "", "", 5, 5, true, System.out); } }
Output
usage: ls [-A] [-b <SIZE> <CAPACITY> <LINE>] [--escape] [-c] -A,--almost-all do not list implied . and .. -b,--block-size <SIZE> <CAPACITY> <LINE> use SIZE-byte blocks --escape print octal escapes for nongraphic characters -c with -lt: sort by, and show, ctime (time of last modification of file status information) with -l:show ctime and sort by name otherwise: sort by Ctime
Now
comment the line 'helpFormatter.setOptionComparator(null);' and re run the
application, you can able to see following output.
usage: ls [-A] [-b <SIZE> <CAPACITY> <LINE>] [-c] [--escape] -A,--almost-all do not list implied . and .. -b,--block-size <SIZE> <CAPACITY> <LINE> use SIZE-byte blocks -c with -lt: sort by, and show, ctime (time of last modification of file status information) with -l:show ctime and sort by name otherwise: sort by ctime --escape print octal escapes for nongraphic characters
No comments:
Post a Comment