You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by John O'Sullivan <jo...@ericsson.com> on 2008/05/29 12:58:59 UTC
Common CLi Usage
Hi
I new to using the apache commons cli I am struggling to get this
correct and would really appreciate any help.
I need to add an option to my command line (-p) with a variable number
of options like the following..
Note there are other options -a, -f, -d but I am not interested in them
for now
e.g
myApp -p [<name> | <Time> | <Boolean>] -a XXX -d xxx -f XXX
where time is of the format 'YYYY-MM-DD HH:MM:SS'
Note
1. There is a space between the "YYYY-MM-DD" and the "HH:MM:SS"(does
this mean the CLI Parser will see 2 parameters )
2. The <time> and <boolean> parameters are optional.
3. The <name> parameter is mandatory when using the -p option
I am using the Commons Cli API..
I am trying to define the option as follows but this obviously isnt
correct
final Option persistDataOption =
OptionBuilder.withArgName("persist").hasOptionalArgs(3)
hasArg().withDescription("Persist Data with Scheduling")
.create(CLIOption.PERSIST_DATA.getOptionString());
where
CLIOption.PERSIST_DATA.getOptionString()) will return the "-p" option
Can someone please show me how to define this command line option
correctly please
Thanks in advance
John
> ericssonl
> John O'Sullivan
> Ericsson Software Campus
> Athlone.
> Co. Westmeath
> Ireland
> *ECN 21389
> *External +353 90 6431389
> john.o.sullivan@ericsson.com
>
>
RE: Common CLi Usage
Posted by Russel Winder <ru...@concertant.com>.
John,
On Thu, 2008-05-29 at 22:10 +0200, John O'Sullivan wrote:
> Hi russel,
> Thanks for your reply, much appreciated..
No problem.
If you check the email histories, you'll probably spot that Commons CLI
is a bit of a hobby horse for me. Groovy and Gant both use it but
(unfortunately) it is very broken -- 1.0 just about works, 1.1 has a
collection of great bug fixes thanks to Hen and Brian, but is
fundamentally broken :-(, 2.x got played with and then the development
team evaporated and left the whole package in limbo.
> If I can change the date/time format to a format where it is only one
> string
> what will be java syntax for definign the option within my application
>
> e.g
> inal Option persistDataOption =
> OptionBuilder.withArgName("persist").hasOptionalArgs(3)
> hasArg().withDescription("Persist Data with Scheduling")
> .create("-p");
>
> I cant seem to get the above line correct...
>
> I want to define an option that has
> A. 3 options... name> | <Time> | <Boolean
> B. 1 Mandatory ... name
> C. 2 optional params Time , Boolean
>
> Can you help me define this option correctly first, then I can move on
> and
> worry about the Date/Time being 2 strings
To be honest I don't think I would even try and attempt using Commons
CLI or any other CLI package to handle the parsing of the option itself.
I would use the options system to get a simple string and then process
that string with a data parser, probably JodaTime until JSR 310 becomes
standard.
So accept "-p" as a simple option with a single string parameter and
then when you find you have one drag up the data processing actions and
handle things then.
--
Russel.
====================================================
Dr Russel Winder Partner
Concertant LLP t: +44 20 7585 2200, +44 20 7193 9203
41 Buckmaster Road, f: +44 8700 516 084
London SW11 1EN, UK. m: +44 7770 465 077
Re: Common CLi Usage
Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
John,
John O'Sullivan wrote:
| Hi,
| Feel free to poke your nose in anytime ;>
|
| Thanks, thats an idea I will try for the "space problem"..
|
| The Other problem is I dont have the correct syntax for the folowing
| line which defines teh option. Do you know the correct java syntax for
| this which provides the functionality I require
Heh.. that's the thing... I have no commons-cli experience at all, which
makes my nose somewhat unwelcome ;)
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkhAhNcACgkQ9CaO5/Lv0PDi+ACeN6o3sgJfUT5WnaBrUaoIVOqS
Ui0AoJ/RpEYRw6FwCVKXOF4AjRlP4kDB
=cp1f
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
RE: Common CLi Usage
Posted by John O'Sullivan <jo...@ericsson.com>.
Hi,
Feel free to poke your nose in anytime ;>
Thanks, thats an idea I will try for the "space problem"..
The Other problem is I dont have the correct syntax for the folowing
line which defines teh option.Do you know the correct java syntax for
this which provides the functionality I require
final Option persistDataOption =
OptionBuilder.withArgName("persist").hasOptionalArgs(3)
hasArg().withDescription("Persist Data with Scheduling")
.create("-p");
This is not correct?
jhon
-----Original Message-----
From: Christopher Schultz [mailto:chris@christopherschultz.net]
Sent: 29 May 2008 21:55
To: Commons Users List
Subject: Re: Common CLi Usage
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
John,
John O'Sullivan wrote:
| If I can change the date/time format to a format where it is only one
| string what will be java syntax for definign the option within my
| application
Sorry to poke my nose into what looks like a rather long-running
discussion, but it occurs to me that calling your program from the
command-line with quotes around the entire timestamp (both date and
time) would make the entire parameter appear as one -- with or without
the space. Something like:
| myApp -p [<name> | <Time> | <Boolean>] -a XXX -d xxx -f XXX
myApp -p '2008-05-29 16:54:25'
Does that help you with your "space" problem?
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkg/GDMACgkQ9CaO5/Lv0PAtuwCeKz11MAM2KultB/c8664q1Mwm
rzYAoLQrQs60OzKEP4MFAIOI+bUlGEIl
=8QoN
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: Common CLi Usage
Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
John,
John O'Sullivan wrote:
| If I can change the date/time format to a format where it is only one
| string
| what will be java syntax for definign the option within my application
Sorry to poke my nose into what looks like a rather long-running
discussion, but it occurs to me that calling your program from the
command-line with quotes around the entire timestamp (both date and
time) would make the entire parameter appear as one -- with or without
the space. Something like:
| myApp -p [<name> | <Time> | <Boolean>] -a XXX -d xxx -f XXX
myApp -p '2008-05-29 16:54:25'
Does that help you with your "space" problem?
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkg/GDMACgkQ9CaO5/Lv0PAtuwCeKz11MAM2KultB/c8664q1Mwm
rzYAoLQrQs60OzKEP4MFAIOI+bUlGEIl
=8QoN
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
RE: Common CLi Usage
Posted by John O'Sullivan <jo...@ericsson.com>.
Hi russel,
Thanks for your reply, much appreciated..
If I can change the date/time format to a format where it is only one
string
what will be java syntax for definign the option within my application
e.g
inal Option persistDataOption =
OptionBuilder.withArgName("persist").hasOptionalArgs(3)
hasArg().withDescription("Persist Data with Scheduling")
.create("-p");
I cant seem to get the above line correct...
I want to define an option that has
A. 3 options... name> | <Time> | <Boolean
B. 1 Mandatory ... name
C. 2 optional params Time , Boolean
Can you help me define this option correctly first, then I can move on
and
worry about the Date/Time being 2 strings
Regards
jhon
-----Original Message-----
From: Russel Winder [mailto:russel.winder@concertant.com]
Sent: 29 May 2008 20:25
To: Commons Users List
Subject: Re: Common CLi Usage
* PGP Signed by an unknown key: 05/29/2008 at 09:24:30 PM On Thu,
2008-05-29 at 12:58 +0200, John O'Sullivan wrote:
> myApp -p [<name> | <Time> | <Boolean>] -a XXX -d xxx -f XXX
>
> where time is of the format 'YYYY-MM-DD HH:MM:SS'
> Note
> 1. There is a space between the "YYYY-MM-DD" and the "HH:MM:SS"(does
> this mean the CLI Parser will see 2 parameters ) 2. The <time> and
> <boolean> parameters are optional.
> 3. The <name> parameter is mandatory when using the -p option
>
> I am using the Commons Cli API..
> I am trying to define the option as follows but this obviously isnt
> correct
>
> final Option persistDataOption =
> OptionBuilder.withArgName("persist").hasOptionalArgs(3)
> hasArg().withDescription("Persist Data with Scheduling")
> .create(CLIOption.PERSIST_DATA.getOptionString());
> where
> CLIOption.PERSIST_DATA.getOptionString()) will return the "-p" option
>
> Can someone please show me how to define this command line option
> correctly please
I don't have an immediate answer for you I'm afraid. The reason for
replying is to note that this looks almost, but not quite exactly, like
an ISO 8601 date -- the differences are going to be very irritating I
suspect. The though struck me that ISO 8601 date should be a known
construct to any CLI system. Of course, Java's current date system is
effectively rubbish, and JodaTime isn't yet standard.
I suspect the only way forward for the moment is to quote the date
string as a parameter or use the full no space ISO 8601 format (i.e.
replace space with T), and then ship the string to a JodaTime function
for parsing.
--
Russel.
====================================================
Dr Russel Winder Partner
Concertant LLP t: +44 20 7585 2200, +44 20 7193 9203
41 Buckmaster Road, f: +44 8700 516 084
London SW11 1EN, UK. m: +44 7770 465 077
* Unknown Key
* 0x856F058D
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: Common CLi Usage
Posted by Russel Winder <ru...@concertant.com>.
On Thu, 2008-05-29 at 12:58 +0200, John O'Sullivan wrote:
> myApp -p [<name> | <Time> | <Boolean>] -a XXX -d xxx -f XXX
>
> where time is of the format 'YYYY-MM-DD HH:MM:SS'
> Note
> 1. There is a space between the "YYYY-MM-DD" and the "HH:MM:SS"(does
> this mean the CLI Parser will see 2 parameters )
> 2. The <time> and <boolean> parameters are optional.
> 3. The <name> parameter is mandatory when using the -p option
>
> I am using the Commons Cli API..
> I am trying to define the option as follows but this obviously isnt
> correct
>
> final Option persistDataOption =
> OptionBuilder.withArgName("persist").hasOptionalArgs(3)
> hasArg().withDescription("Persist Data with Scheduling")
> .create(CLIOption.PERSIST_DATA.getOptionString());
> where
> CLIOption.PERSIST_DATA.getOptionString()) will return the "-p" option
>
> Can someone please show me how to define this command line option
> correctly please
I don't have an immediate answer for you I'm afraid. The reason for
replying is to note that this looks almost, but not quite exactly, like
an ISO 8601 date -- the differences are going to be very irritating I
suspect. The though struck me that ISO 8601 date should be a known
construct to any CLI system. Of course, Java's current date system is
effectively rubbish, and JodaTime isn't yet standard.
I suspect the only way forward for the moment is to quote the date
string as a parameter or use the full no space ISO 8601 format (i.e.
replace space with T), and then ship the string to a JodaTime function
for parsing.
--
Russel.
====================================================
Dr Russel Winder Partner
Concertant LLP t: +44 20 7585 2200, +44 20 7193 9203
41 Buckmaster Road, f: +44 8700 516 084
London SW11 1EN, UK. m: +44 7770 465 077