[Mono-list] Command line processing tool in C#

A Rafael D Teixeira rafael.teixeirabr@terra.com.br
Thu, 08 Apr 2004 12:33:31 -0300


Inline...

On Wed, 2004-04-07 at 21:59, Jonathan Pryor wrote:
> Below...
> 
> On Wed, 2004-04-07 at 15:15, Thomas R. Corbin wrote:
> > I've been using this tool in python:
> > 
> > http://www.python.org/doc/2.3/lib/module-optparse.html
> > 
> > And wondered if there was a similar tool in C# or for mono.
> 
> There's a better one (in my obviously biased opinion): Mono.GetOptions.

Thanks for the compliment Jonathan...

> See the attached file for an example.  It's unique in the option-parsing
> world (AFAIK) in that it uses attributes to specify the help text,
> short, and long flags that are interpreted.

And I'm going to GETTEXTify it for descriptions WHEN I have some time...

> 
> The one thing I can't figure out is how to specify "verbosity levels",
> where "-v -v -v" would be a valid set of command line arguments...

Well Jon your wish is my command, just updated cvs with a patch...

Now you can do something like:

<snip>
...

[Option(-1, "Display verbose messages, use multiple times to increase
level", 'v')]
public bool verbosity {
    set {
	HowVerbose++;
	Console.WriteLine("Verbosity {0}", HowVerbose); 
    }
}

...
</snip>

then running it for debugging it shows:

<output>
mono myverboseprogram.exe --verbosegetoptions -v -v -v
<verbosity> set to [true]
Verbosity 1
<verbosity> set to [true]
Verbosity 2
<verbosity> set to [true]
Verbosity 3
</output>

Just yank that WriteLine and put a ceiling on it if you want (in most
uses we can just use the maximum value allowed when overflow occurs)

It will only allow it for boolean properties or boolean-accepting
methods, as a boolean field only can set with the pair of admissible
values and can't process the assignment.

> 
>  - Jon
> 

Enjoy, people,
 
Rafael "Monoman" Teixeira 
Mono Hacker since 16 Jul 2001 - http://www.go-mono.org/
Mono Brasil Founding Member - http://monobrasil.redesolbrasil.org/
English Blog: http://monoblog.blogspot.com/
Brazilian Portuguese Blog: http://monoblog.weblogger.terra.com.br/