summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2019-01-23 10:24:11 +0200
committerLars Wirzenius <liw@liw.fi>2019-01-23 10:24:11 +0200
commit376fe411eb45fbf4c2d38b75b440e281336bcc27 (patch)
tree1f7e1a6517e6b03121b7e7e3f610f5c5a4ccd545
parent95491de0c6c5377107a8a7eb6ce4b665e7e0f1d2 (diff)
downloadeffitool-376fe411eb45fbf4c2d38b75b440e281336bcc27.tar.gz
Add: list-servers subcommand and subommand infra
-rwxr-xr-xeffitool39
1 files changed, 38 insertions, 1 deletions
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 <http://www.gnu.org/licenses/>.
+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__':