I'd like to announce a new project, based on straight.plugin, a command framework that provides a declarative way to define command-line options, sub-commands, and allows plugins from third-parties to expand commands.
This is all very early, I'm calling this version 0.1a1 and lots of things are missing, but here is an example (which works) of a small todo application built with this. #!/usr/bin/env python from __future__ import print_function import sys from straight.command import Command, Option, SubCommand class List(Command): def run_default(self, **extra): for line in open(self.parent.args['filename']): print(line.strip('\n')) class Add(Command): new_todo = Option(dest='new_todo', action='append') def run_default(self, new_todo, **extra): with open(self.parent.args['filename'], 'a') as f: for one_todo in new_todo: print(one_todo.strip('\n'), file=f) class Todo(Command): filename = Option(dest='filename', action='store') list = SubCommand('list', List) add = SubCommand('add', Add) if __name__ == '__main__': Todo().run(sys.argv[1:]) And a sample of the result of this little script: $ ./todo.py todo.txt add "Write an example tool" $ ./todo.py todo.txt add "Get the documentation cleaned up and on readthedocs" $ ./todo.py todo.txt add "Blog about the project" $ ./todo.py todo.txt list Write an example tool Get the documentation cleaned up and on readthedocs Blog about the project The documentation and source are both available now. docs: http://straightcommand.readthedocs.org/ source: https://github.com/ironfroggy/straight.command announcement: http://techblog.ironfroggy.com/2012/05/ann-straightcommand-01a1-command.html -- Read my blog! I depend on your acceptance of my opinion! I am interesting! http://techblog.ironfroggy.com/ Follow me if you're into that sort of thing: http://www.twitter.com/ironfroggy -- http://mail.python.org/mailman/listinfo/python-list