261: More work on demo using Option.__call__() for interactive input

This commit is contained in:
Jason Gerard DeRose
2008-09-04 08:33:41 +00:00
parent 915486dadc
commit 6f95249d52
2 changed files with 9 additions and 4 deletions

View File

@@ -164,7 +164,7 @@ class CLI(object):
print '>>> %s: %s' % (option.name, error)
raw = raw_input(prompt)
try:
value = option(raw)
value = option(raw, **kw)
if value is not None:
kw[option.name] = value
break

View File

@@ -164,7 +164,10 @@ class Option(plugable.ReadOnly):
if self.default_from is not None:
default = self.default_from(**kw)
if default is not None:
return self.convert(default)
try:
return self.convert(self.normalize(default))
except errors.ValidationError:
return None
return self.default
def get_values(self):
@@ -179,10 +182,12 @@ class Option(plugable.ReadOnly):
value = self.get_default(**kw)
if value is None:
if self.required:
raise RequirementError(option.name)
raise errors.RequirementError(self.name)
return None
else:
pass
value = self.convert(self.normalize(value))
self.validate(value)
return value
class Command(plugable.Plugin):