diff options
-rwxr-xr-x | ipa | 49 | ||||
-rw-r--r-- | ipalib/base.py | 15 |
2 files changed, 63 insertions, 1 deletions
@@ -0,0 +1,49 @@ +#!/usr/bin/python + +# Authors: +# Jason Gerard DeRose <jderose@redhat.com> +# +# Copyright (C) 2008 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 2 only +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +""" +Command Line Interface to IPA. +""" + +import sys +from ipalib.startup import api + +def print_commands(): + print 'Commands:' + m = api.max_cmd_len + for c in api.commands: + c = c.replace('_', '-') + print ' %s The help on %s' % (c.ljust(m), c) + +def print_help(cmd): + print 'Help on %s' % cmd + +if len(sys.argv) < 2: + print_commands() + print 'Usage: ipa COMMAND [OPTIONS]' + sys.exit(2) + +cmd = sys.argv[1] + +if cmd not in api.commands: + print_commands() + print 'ipa: ERROR: unknown command %r' % cmd + sys.exit(2) diff --git a/ipalib/base.py b/ipalib/base.py index 537146b4c..2769efd3b 100644 --- a/ipalib/base.py +++ b/ipalib/base.py @@ -94,7 +94,7 @@ class NameSpace(object): """ Returns True if namespace has an item named `key`. """ - return key in self.__kw + return key.replace('-', '_') in self.__kw def __iter__(self): """ @@ -132,6 +132,10 @@ class Named(object): return self.__class__.__name__ name = property(__get_name) + def __get_doc(self): + return self.__class__.__doc__ + doc = property(__get_doc) + class ObjectMember(Named): def __init__(self, obj): @@ -189,6 +193,7 @@ class Object(Named): class API(object): __objects = None __commands = None + __max_cmd_len = None def __init__(self): self.__obj_d = {} @@ -201,6 +206,14 @@ class API(object): return self.__commands commands = property(__get_commands) + def __get_max_cmd_len(self): + if self.__max_cmd_len is None: + if self.__commands is None: + return 0 + self.__max_cmd_len = max(len(n) for n in self.__commands) + return self.__max_cmd_len + max_cmd_len = property(__get_max_cmd_len) + def register_object(self, cls, override=False): assert type(override) is bool if not (inspect.isclass(cls) and issubclass(cls, Object)): |