[ https://issues.apache.org/jira/browse/KAFKA-786?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Swapnil Ghike updated KAFKA-786: -------------------------------- Attachment: kafka-786-v2.patch Jun raised a good question: What do we do for options like "print" or "verify" or "enable" etc? These options typically don't expect a boolean argument, it should be enough to specify these options on the command line to sort of enable them in the program. The answer is to not use any of withRequiredArg() or withOptionalArg(). We can simply write something like the following: val printOpt = parser.accepts("print-data-log", "if set, printing the messages content when dumping data logs") Later we should check in the program like the following: if(options.has(printOpt) print() else doNothing() > Use "withRequiredArg" while parsing jopt options in all tools > ------------------------------------------------------------- > > Key: KAFKA-786 > URL: https://issues.apache.org/jira/browse/KAFKA-786 > Project: Kafka > Issue Type: Bug > Reporter: Swapnil Ghike > Assignee: Swapnil Ghike > Priority: Blocker > Labels: kafka-0.8, p2 > Attachments: kafka-786.patch, kafka-786-v2.patch > > > While parsing jopt Options in our tools, we sometimes use withRequiredArg() > and sometimes use withOptionalArg(). I think this confusing and we should > always use withRequiredArg(). > withOptionalArg() allows you to provide an option without an argument. For > instance, the following commands will yield the same result if xyz was a > parser option that accepted an optional argument and was provided a default > in the tool's code: > kafka-tool.sh --xyz > kafka-tool.sh > I don't quite see the need to allow the 1st command, think that writing code > will be less confusing if we allowed only the second command. To do that, we > can make all options require arguments. These arguments will need to be given > via command line or via a default in the code. So if xyz was an option that > required an argument then you will see the following: > kafka-tool.sh --xyz > Option ['xyz'] requires an argument //printed by jOpt > kafka-tool.sh --xyz argumentVal > // Kafka tool proceeds > If you want to use a default value specified for xyz in the code, then simply > run ./kafka-tool.sh. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira