mirror of https://github.com/python/cpython
renamed to CommandFrameWork
added ready() message added PostUsageMessage
This commit is contained in:
parent
318b80d097
commit
78016d8630
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue