[Distutils] Creating Dynamic Command Line Options from Python Egg Plugins

Noah Gift noah.gift at gmail.com
Thu Feb 21 15:51:01 CET 2008


On Feb 20, 2008, at 8:13 PM, Michael Hoffman wrote:

> Noah Gift wrote:
>> Has anyone created a command line tool, using optparse, that
>> dynamically creates options from available eggs/plugins?  I have a
>> need to create such a tool, and was looking for an example.
>

Thanks Michael.  That gives me some good ideas to start with!

> Yeah, I did something like this, which is somewhat clunky:
>
> def parse_options(args):
>     usage = """%prog [OPTION...] MODEL SEQFILE OUTFILE
>        %prog [OPTION...] --driver=DRIVER MODEL SEQFILE
> [DRIVEROPTIONS...]"""
>     version = "%%prog %s" % __version__
>     parser = OptionParser(usage=usage, version=version)
>     parser.disable_interspersed_args()
>
>
>     with OptionGroup(parser, "Output driver") as group:
>         group.add_option("-d", "--driver", default="DEFAULT",
>                          help="set output format")
>
>         group.add_option("--driver-help", action="store_true",
>                          help="get driver-specific help")
>
>     options, args = parser.parse_args(args)
>
>     if options.driver_help:
>         driver_class = driver_load(options.driver)
>         driver_class.print_help()
>         sys.exit(0)
>
> def driver_load(name):
>     return load_entry_point("myproject", "myproject.drivers", name)
>
> And I defined the entry points in my setup.py file:
>
> ====
> [myproject.drivers]
> DEFAULT = myproject.driver.hdf5:HDF5Driver
> hdf5 = myproject.driver.hdf5:HDF5Driver
> sql = myproject.driver.sql:SQLDriver
> ====
>
> At some point I pass unprocessed args to the entry point, which parse
> them with optparse. I could call the program like this:
>
> myproject --driver=sql model seqfile --database=server.example.net
>
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> http://mail.python.org/mailman/listinfo/distutils-sig

Noah Gift / http://noahgift.com [Python+Grok+AJAX+Mashup]



More information about the Distutils-SIG mailing list