[ 
https://issues.apache.org/jira/browse/CASSANDRA-18661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17798518#comment-17798518
 ] 

Claude Warren commented on CASSANDRA-18661:
-------------------------------------------

Using Apache Commons CLI is not going to remove much code.

Apache Commons requires that options be prefixed with a '-' or 2 dashes.  So it 
will only parse the sub-options.  It will create a list of the arguments to 
each sub-option but those will have to be parsed using a different tool as they 
are really positional arguments and the Apache CLI does not seem to handle 
those.  This means that all the code currently in place for parsing the 
sub-options will need to remain or be rewritten or we will need to find a 
positional command line parser to read them.  And then the presence of the '?' 
in some of the common options (i.e. n<?) will require custom parsing.

My recommendation is to leave this alone unless there is a compelling reason to 
change it.

> Update cassandra-stress to use Apache Commons CLI
> -------------------------------------------------
>
>                 Key: CASSANDRA-18661
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18661
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tool/stress
>            Reporter: Brad Schoening
>            Assignee: Claude Warren
>            Priority: Normal
>              Labels: lhf
>
> The Apache Commons CLI library provides an API for parsing command line 
> options with the package org.apache.commons.cli and this is already used by a 
> dozen of existing Cassandra utilities including:
> {quote}SSTableMetadataViewer, StandaloneScrubber, StandaloneSplitter, 
> SSTableExport, BulkLoader, and others.
> {quote}
> However, cassandra-stress is an outlier which uses its own custom classes to 
> parse command line options with classes such as OptionsSimple.  In addition, 
> the options syntax for username, password, and others are not aligned with 
> the format used by CQLSH.
> Currently, there are > 5K lines of code in 'settings' which appears to just 
> process command line args.
> This suggestion is to:
>  
> a) Upgrade cassandra-stress to use Apache Commons CLI (no new dependencies 
> are required as this library is already used by the project)
>  
> b) Align the cassandra-stress CLI options with those in CQLSH, 
>  
> {quote}For example, using the new syntax like CQLSH:
> {quote}
>  
> cassandra-stress -username foo -password bar
> {quote}and replacing the old syntax:
> {quote}
> cassandra-stress -mode username=foo and password=bar
>  
> This will simplify and unify the code base, eliminate code and reduce the 
> confusion between similar named classes such as 
> org.apache.cassandra.stress.settings.\{Option, OptionsMulti, OptionsSimple} 
> and org.apache.commons.cli.{Option, OptionGroup, Options)
>  
> Note: documentation will need to be updated as well



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to