Commit 78016d86 authored by Guido van Rossum's avatar Guido van Rossum

renamed to CommandFrameWork

added ready() message
added PostUsageMessage
parent 318b80d0
"Framework for command line interfaces like CVS. See class CmdFrameWork."
class CmdFrameWork:
class CommandFrameWork:
"""Framework class for command line interfaces like CVS.
......@@ -28,6 +28,8 @@ class CmdFrameWork:
UsageMessage = \
"usage: (name)s [flags] subcommand [subflags] [argument] ..."
PostUsageMessage = None
GlobalFlags = ''
def __init__(self):
......@@ -44,6 +46,7 @@ class CmdFrameWork:
return self.usage(msg)
self.options(opts)
if not args:
self.ready()
return self.default()
else:
cmd = args[0]
......@@ -62,6 +65,7 @@ class CmdFrameWork:
except getopt.error, msg:
return self.usage(
"subcommand %s: " % cmd + str(msg))
self.ready()
return method(opts, args)
def options(self, opts):
......@@ -74,6 +78,10 @@ class CmdFrameWork:
print 'option', o, 'value', `a`
print "-"*40
def ready(self):
"""Called just before calling the subcommand."""
pass
def usage(self, msg = None):
"""Print usage message. Return suitable exit code (2)."""
if msg: print msg
......@@ -100,6 +108,8 @@ class CmdFrameWork:
names.sort()
for name in names:
print docstrings[name]
if self.PostUsageMessage:
print self.PostUsageMessage
return 2
def default(self):
......@@ -111,7 +121,7 @@ class CmdFrameWork:
def test():
"""Test script -- called when this module is run as a script."""
import sys
class Hello(CmdFrameWork):
class Hello(CommandFrameWork):
def do_hello(self, opts, args):
"hello -- print 'hello world', needs no arguments"
print "Hello, world"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment