From 71d36aa6a0b9627ae818d116c7240197a62cff74 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Thu, 4 Sep 2008 07:18:26 +0000 Subject: 258: Added some experimental features for interactively prompting for values --- ipalib/public.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'ipalib/public.py') diff --git a/ipalib/public.py b/ipalib/public.py index eb94ac52..6220acc0 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -169,6 +169,10 @@ class Option(plugable.ReadOnly): return self.type.values return tuple() + def __call__(self, value, **kw): + pass + + class Command(plugable.Plugin): __public__ = frozenset(( @@ -178,6 +182,7 @@ class Command(plugable.Plugin): 'validate', 'execute', '__call__', + 'smart_option_order', 'Option', )) __Option = None @@ -257,6 +262,17 @@ class Command(plugable.Plugin): self.validate(**kw) self.execute(**kw) + def smart_option_order(self): + def get_key(option): + if option.required: + if option.default_from is None: + return 0 + return 1 + return 2 + for option in sorted(self.Option(), key=get_key): + yield option + + class Object(plugable.Plugin): __public__ = frozenset(( -- cgit