From c23e25df82b0322cc77ce3fa2926d23381052bb4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 12 May 2019 10:09:47 +0200 Subject: [PATCH] begin introducing structure & sub parsers --- ungleichcli.py | 66 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/ungleichcli.py b/ungleichcli.py index 4fc927d..d3e42e3 100644 --- a/ungleichcli.py +++ b/ungleichcli.py @@ -2,23 +2,65 @@ import requests import argparse +VERSION = "0.0.2" + def msg(name=None): return '''ungleich-cli --set-reverse --user --token --name ''' -parser = argparse.ArgumentParser(description="This script set the reverse dns for your VM", usage=msg()) +class ungleichCLI(object): + def __init__(self): + self._init_parser() -parser.add_argument('--set-reverse', help='REQUIRED: IPv6 Address of your VM', metavar='', required=True) -parser.add_argument('--user', help='Your ungleich username', metavar='', required=True) -parser.add_argument('--token', help='Your ungleich 6 digit OTP generated token', metavar='', type=int, required=True) -parser.add_argument('--name', help='Hostname', metavar='', required=True) + def _init_parser(self): -args = parser.parse_args() + self.parser = {} + + # Options _all_ parsers have in common + self.parser['loglevel'] = argparse.ArgumentParser(add_help=False) + self.parser['loglevel'].add_argument( + '-v', '--verbose', + action='count', + dest='verbose', + required=False) + + # Main subcommand parser + self.parser['main'] = argparse.ArgumentParser( + description='ungleich-cli ' + VERSION) + self.parser['main'].add_argument( + '-V', '--version', help='Show version.', action='version', + version='%(prog)s ' + VERSION) + self.parser['sub'] = self.parser['main'].add_subparsers( + title="Commands", dest="command") + + # Parents used for all parsers + self.parser_parents = self.parser['loglevel'] + + def _init_ripe(self): + self.parser['ripe'] = self.parser['sub'].add_parser( + 'ripe', parents=[self.parser_parents]) + + def _init_dns(self): + self.parser['dns'] = self.parser['sub'].add_parser( + 'dns', parents=[self.parser_parents]) + + self.parser['dns'].add_argument('--set-reverse', help='REQUIRED: IPv6 Address of your VM', metavar='', required=True) + self.parser['dns'].add_argument('--user', help='Your ungleich username', metavar='', required=True) + self.parser['dns'].add_argument('--token', help='Your ungleich 6 digit OTP generated token', metavar='', type=int, required=True) + self.parser['dns'].add_argument('--name', help='Hostname', metavar='', required=True) + + def _handle_dns(self): + """A dummy endpoint, to check what endpoint will be reverse-dns service.""" + r = requests.post( + 'https://en53kfc0hydpg.x.pipedream.net', + json={'username': args.user, 'token': args.token, 'ipaddress': args.set_reverse, 'name': args.name}) + return r.text + + def commandline(self): + args = self.parser['main'].parse_args() -def cli(): - """A dummy endpoint, to check what endpoint will be reverse-dns service.""" - r = requests.post( - 'https://en53kfc0hydpg.x.pipedream.net', - json={'username': args.user, 'token': args.token, 'ipaddress': args.set_reverse, 'name': args.name}) - return r.text + +if __name__ == '__main__': + cli = ungleichCLI() + cli.commandline()