summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Doc/lib/required_2.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Doc/lib/required_2.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Doc/lib/required_2.py')
-rwxr-xr-xsys/src/cmd/python/Doc/lib/required_2.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Doc/lib/required_2.py b/sys/src/cmd/python/Doc/lib/required_2.py
new file mode 100755
index 000000000..421514af0
--- /dev/null
+++ b/sys/src/cmd/python/Doc/lib/required_2.py
@@ -0,0 +1,41 @@
+import optparse
+
+class Option (optparse.Option):
+ ATTRS = optparse.Option.ATTRS + ['required']
+
+ def _check_required (self):
+ if self.required and not self.takes_value():
+ raise OptionError(
+ "required flag set for option that doesn't take a value",
+ self)
+
+ # Make sure _check_required() is called from the constructor!
+ CHECK_METHODS = optparse.Option.CHECK_METHODS + [_check_required]
+
+ def process (self, opt, value, values, parser):
+ optparse.Option.process(self, opt, value, values, parser)
+ parser.option_seen[self] = 1
+
+
+class OptionParser (optparse.OptionParser):
+
+ def _init_parsing_state (self):
+ optparse.OptionParser._init_parsing_state(self)
+ self.option_seen = {}
+
+ def check_values (self, values, args):
+ for option in self.option_list:
+ if (isinstance(option, Option) and
+ option.required and
+ not self.option_seen.has_key(option)):
+ self.error("%s not supplied" % option)
+ return (values, args)
+
+
+parser = OptionParser(option_list=[
+ Option("-v", action="count", dest="verbose"),
+ Option("-f", "--file", required=1)])
+(options, args) = parser.parse_args()
+
+print "verbose:", options.verbose
+print "file:", options.file