diff options
-rwxr-xr-x | ipa | 150 |
1 files changed, 2 insertions, 148 deletions
@@ -20,160 +20,14 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ -Command Line Interface to IPA. +Command Line Interface for IPA Administration. -Just proof of concept stuff in here right now. +The CLI functionality is implemented in ipalib/cli.py """ -import sys from ipalib import api from ipalib.cli import CLI import ipalib.load_plugins cli = CLI(api) cli.run() - -sys.exit() - -TAB_WIDTH = 2 - -def _(msg): - """ - Dummy gettext function for testing. - """ - return msg - -class row(object): - def __init__(self, tab, c1, c2=None): - assert type(tab) is int - assert type(c1) in (str, int) - assert type(c2) is str or c2 is None - self.tab = tab - self.c1 = c1 - self.c2 = c2 - - def __len__(self): - return len(str(self.c1)) - - def pretty_print(self, just): - tab = ' ' * (self.tab * TAB_WIDTH) - if self.c2 is None: - print '%s%s' % (tab, self.c1) - else: - if type(self.c1) is int: - c1 = str(self.c1).rjust(just) - else: - c1 = self.c1.ljust(just) - print '%s%s %s' % (tab, c1, self.c2) - -def pretty_print(rows): - rows = tuple(rows) - def get_lengths(): - yield 0 - for r in rows: - if r.c2 is not None: - yield len(r) - max_len = max(get_lengths()) - for r in rows: - r.pretty_print(max_len) - - -def print_commands(): - print 'Commands:' - m = api.max_cmd_len - for cmd in api.cmd: - print ' %s %s' % (str(cmd).ljust(m), cmd.get_doc(_)) - -def print_help(cmd): - print 'Help on %s' % cmd - - - - - - - - - - - - - - -def print_api(): - def iter_api(tab): - for name in api: - ns = getattr(api, name) - yield row( - tab, - name, - repr(ns), - ) - for i in ns: - yield row( - tab + 1, - i.name, - repr(i) - ) - - def iter_obj(tab): - for obj in api.obj: - yield row( - tab, - obj.name, - repr(obj), - ) - for (n, f) in [('mthd', '.%s()'), ('prop', '.%s')]: - ns = getattr(obj, n) - yield row( - tab + 1, - n, - repr(ns), - ) - for attr in ns: - yield row( - tab + 2, - f % attr.name, - repr(attr), - ) - - def iter_summary(tab): - for name in api: - ns = getattr(api, name) - yield row( - tab, - len(ns), - name - ) - - def print_heading(h): - print '\n%s:' % h - print '-' * (len(h) + 1) - - tab = 1 - print_heading('API Overview') - pretty_print(iter_api(tab)) - - print_heading('Object Details') - pretty_print(iter_obj(tab)) - - print_heading('Summary') - pretty_print(iter_summary(tab)) - - - - - -if len(sys.argv) < 2: - print_commands() - print 'Usage: ipa COMMAND [OPTIONS]' - sys.exit(2) -name= sys.argv[1] -if name == '_api_': - print_api() - sys.exit() -elif name not in api.cmd: - print_commands() - print 'ipa: ERROR: unknown command %r' % name - sys.exit(2) -api.cmd[name]() |