spug.util.ComLine
index
/home/mmuller/w/spug/util/ComLine.py

Command line parsing utility.
 
Synopsis:
 
{{
   from spug.util.ComLine import helpOption, ArgTypeComLine
   
   # define the command line options
   clopts = \
      [
      # standard help option (-h or --help)
      helpOption(),
      
      # option -f, --file, or --file-to-use which accepts a single
      # parameter
      ArgType('file', 'f', ['file', 'file-to-use'], parm = 1, 
              parmHelp = 'file-name',
              help = 'Specifies the file to be used.'
              ),
      
      # a verbosity option
      ArgType('verbose', 'v', ['verbose'], help = 'be verbose'),
      ]
   
   # we define the help prefix, options will be automatically printed
   # if help is requested.
   cl = ComLine(clopts, helpPrefix = '''
   widget - defines various widgets
   Usage:
      widget [options] widget-name ...
   ''')
   
   # "others" gives us the list of non-option arguments.  Check to 
   # see if it is empty, show usage blurb if it is.
   if not cl.others():
      cl.help()
   
   # get file option (None if none was supplied).
   file = cl['file']
   
   # get verbosity (1 or None)
   verbose = cl['verbose']
}}

 
Classes
       
exceptions.Exception(exceptions.BaseException)
util.ComLine.Error
util.ComLine.DuplicateOptionError
util.ComLine.UnknownOptionError
util.ComLine.UsageError
util.ComLine.ArgType
util.ComLine.ComLine

 
class ArgType
    An instance of *ArgType* defines that characteristics of a single command
line option.  All parameters to @__init__() are available as public
variables.
 
  Methods defined here:
__init__(self, name, shortOptions, longOptions=[], parm=0, valid=None, mult=0, help='', helpCmd=0, parmHelp='parm')
Constructs ArgType.
Parameters:
/name/::
    Name of the option.
/shortOptions/::
    A string containing the single character command line options.
/longOptions/::
    A list of strings containing the long (full word) command line
    options.
/parm/::
    If this is true, the argument accepts a parameter.
/valid/::
    If used, should be passed a function which accepts the value of the
    argument and returns true if the argument is valid (falls within
    the constraints defined by the parameter).  Only appropriate in
    conjunction with /parm/
/mult/::
    If this is true, the argument may be used more than once on the
    command line and its value will be returned as a list of all of
    the values that have been defined for it.
/help/::
    If set, this contains a help message that will be printed out along
    with the option when help is displayed using @ComLine.help()
/helpCmd/::
    If this is true, the use of this option automatically triggers the
    @ComLine.help() function.
/parmHelp/::
    This is the string that will be printed in the option's help message
    in to describe the parameter for the option.  For example, if a value
    of "file-name" is used for a "-c" option, the option help will look
    like this:
 
    {{
       -c <file-name>
          Does something with the given file.
    }}

 
class ComLine
    Instances of this class parse and manage command line options.
The public variable /args/ is an array containing the unprocessed 
command line arguments (those that did not begin with '-').
 
  Methods defined here:
__getitem__(self, key)
Attempts to make the command line accessible as both an array and a
dictionary.  If /key/ is an integer, returns a tuple containing either
the indexed argument and *None* (if it is a non-option argument) or
the value of the option and the @ArgType object for the option (if it
is a command line option).
 
If /key/ is a string, it should be the name of a command line option and
the value of that option will be returned.  This will return *None* if
the option is a legitimate option but was not specified on the command
line.
 
If the value specified by the key does not exist, raises either an
*IndexError* or a *KeyError* depending on the mode of addressing used.
__init__(self, arginfo, argv=None, helpPrefix=None)
Constructs a ComLine object from /arginfo/ (a list of @ArgType instances)
and /argv/ (list of command line arguments).  If argv is not supplied,
sys.argv is used.
help(self)
Prints out a nicely formatted help message containing a description of
each of the options.  If /helpPrefix/ was supplied during construction,
prints this first.  Otherwise, just prints the program name first.
optionsHelpToNML(self, cleanHelpText=0)
Returns a string representing the options help formatted in NML.
 
If /cleanHelpText/ is true, escapes the special NML characters 
in the help text.
others(self)
Constructs and returns a list of all non-option parameters.

 
class DuplicateOptionError(Error)
    Raised when a non-multiple command line option is used more than once.
 
 
Method resolution order:
DuplicateOptionError
Error
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors inherited from Error:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.Exception:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0x8140ce0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message
exception message

 
class Error(exceptions.Exception)
    
Method resolution order:
Error
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.Exception:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0x8140ce0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message
exception message

 
class UnknownOptionError(Error)
    Raised when an unknown command line option is encountered.
 
 
Method resolution order:
UnknownOptionError
Error
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors inherited from Error:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.Exception:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0x8140ce0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message
exception message

 
class UsageError(Error)
    Raised when something is wrong with the option's argument.
 
 
Method resolution order:
UsageError
Error
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors inherited from Error:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.Exception:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0x8140ce0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message
exception message

 
Functions
       
help(helpText, force=0)
Import this function when you just need to provide the "help" command
line option.  For example:
 
{{
    from spug.util.ComLine import help
    help('''
    foo - program to do foo
    Options:
    '''
    )
}}
 
If you pass in a true value for /force/, it will force the help message
to be printed no matter what the command line options are.
helpOption()
Clients may use this function to easily create the officially sanctioned
help function.