From 376fe411eb45fbf4c2d38b75b440e281336bcc27 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 23 Jan 2019 10:24:11 +0200 Subject: Add: list-servers subcommand and subommand infra --- effitool | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/effitool b/effitool index 6a42885..35c03c0 100755 --- a/effitool +++ b/effitool @@ -16,6 +16,7 @@ # along with this program. If not, see . +import argparse import configparser import os import sys @@ -36,11 +37,47 @@ class Config: def dump(self, f): self._cp.write(f) + def servers(self): + return [k for k in self._cp.keys() if k != 'DEFAULT'] + + def get(self, name): + server = self._cp[name] + return { + 'url': server['url'], + 'client_id': server['client_id'], + 'client_secret': server['client_secret'], + } + + +def list_servers(args, config): + for name in config.servers(): + print('server', name) + server = config.get(name) + for key in sorted(server): + print(' ', key, server[key]) + + +def process_args(config): + subcommands = [ + ('list-servers', list_servers), + ] + + p = argparse.ArgumentParser() + factory = p.add_subparsers() + + for name, func in subcommands: + pp = factory.add_parser(name) + pp.set_defaults(func=func) + + args = vars(p.parse_args()) + func = args['func'] + func(args, config) + def main(): config = Config() config.read(CONFIG_FILENAME) - config.dump(sys.stdout) + args = process_args(config) if __name__ == '__main__': -- cgit v1.2.1