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.
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@python.org http://mail.python.org/mailman/listinfo/distutils-sig