commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Oxspring" <>
Subject Re: [CLI] Switches ?
Date Wed, 02 Jul 2003 15:26:55 GMT
Hi Herve,

Cheers for the pointer, I'd forgotten about switches.

I figured I'd use this opportunity to plug my own CLI2 proposal a little more so here's how
I see switches slotting in:

A SwitchBuilder would be created to deal with a specific pair of enable / disable prefixes:
    SwitchBuilder sBuilder = new SwitchBuilder("+","-");

Then a SwitchOption would be created with a particular name:
    SwitchOption scrollbar = sBuilder.withName("sb").create();

The getPrefixes() for SwitchOption would return [+sb,-sb] and the CommandLine object would
probably gain a method along the
following lines; returning TRUE iff the enabled version was present, FALSE iff the disabled
version was present or null otherwise:
    Boolean getSwitch(SwitchOption)
(And an associated setSwitch(SwitchOption,Boolean) method)

Separating the prefixes allows us to use the same code to handle ./configure style options
such as "--enable-FEATURE" and
"--disable-FEATURE" simply by supplying "--enable" and "--disable" instead of "+" and "-".

If we make the SwitchOption extend ParentOption then we can even compose one with an Argument
as follows:

    // build the switch
    SwitchOption sslSwitch = new SwitchBuilder("--with-","--without-").withName("ssl").create();

    // wrap in an argument
    Argument sslArgument = new ArgumentBuilder().withName("DIR").withChild(sslSwitch).create();


    // deal with ssl
        sslDir = findSsl(commandLine.getValues("--with-ssl"));

Thus the complex ./configure style options such as "--with-ssl=/usr/share/ssl" / "--without-ssl"
would be supported out of the box.
The implementation should be pretty straight forward - new classes SwitchOption & SwitchBuilder,
some addition to CommandLine and
lots of tests.  IMO, minimal impact for a handy new feature.


----- Original Message ----- 
From: "Herve Quiroz" <>
To: <>
Sent: Tuesday, July 01, 2003 3:19 PM
Subject: [CLI] Switches ?

> Hi,
> As you are still in design stage for CLI 2.0, I thought I might just
> submit another feature that is used by command line parsers for some apps:
> switches.
> In CLI, the PREFIX for a command-line option is '-' but may be overriden
> to become anything else.  Some apps have several different prefixes to
> manage switches. When you consider xterm for example, you get two flavors
> for the same option, one that "enable" it (with -option) and one that
> "disable" it (with +option). For instance,
>  '-sb' means you want the scrollbar
>  '+sb' means you don't want it
> Personally, I wouldn't use such a scheme to parse command line arguments
> so I won't need it in a future version of CLI (BTW I find the next version
> quite interesting). Thus, I am not requesting a new feature from CLI here.
> Anyway, you might want to decide now if you plan to support such a feature
> in the near future now that you are defining the API...
> Regards,
> Herve
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message