renamed to CommandFrameWork

added ready() message
added PostUsageMessage
This commit is contained in:
Guido van Rossum 1995-04-27 23:32:47 +00:00
parent 318b80d097
commit 78016d8630
1 changed files with 12 additions and 2 deletions

View File

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