Hey, I mapped what command line parser styles we use across the project while dealing with some ticket (20448) and it is mixed like this, I am talking about stuff we use in commons-cli for Gnu and Posix parsers:
GnuParser StandaloneSplitter BulkLoader (aka sstableloader) HashPassword GenerateTokens AuditLogViewer StandaloneVerifier StandaloneSSTableUtil StandaloneUpgrader StandaloneScrubber PosixParser SSTablePartitions SSTableMetadataViewer SSTableExport AbstractJMXClient which is not used anywhere, huh? For these we use manual parsing of arguments without any library SSTableRepairedAtSetter SSTableOfflineRelevel SSTableLevelResetter SSTableExpiredBlockers TransformClusterMetadataHelper airline / (will be picocli-ed soon) JMXTool FullQueryLogTool CompactionStress nodetool - will be picocli-ed Stress - totally custom stuff but cassandra-easy-stress just landed now which uses "com.beust.jcommander" For what we have in tools, what should I base it on going forward? As a curiosity / interestingly enough, from the perspective of common-cli implementation, both GnuParser as well as PosixParser are marked as deprecated. What is not deprecated in commons-cli is "DefaultParser" which can be configured to mimic either style (gnu / posix). What is the official policy we have around arguments parsing? What kind of style should we default to for tools? Posix or Gnu? (not talking about nodetool as that is a category in itself). It seems like GnuParser is more prevalent, so is that one the winner here? I understand that there is a ton of legacy and we can not just change the styles easily for the code already there without a big bang. What I am trying to do here is to just know what we will go with. I do not think that mixing two styles arbitrarily is good. Regards