mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-01-23 06:43:13 -06:00
13: Starting playing around with 'ipa' cli script
This commit is contained in:
parent
739e67ca7d
commit
370282819d
49
ipa
Executable file
49
ipa
Executable file
@ -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)
|
@ -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)):
|
||||
|
Loading…
Reference in New Issue
Block a user