from uncloud.cli.helper import make_request, get_otp_parser
from uncloud.common.parser import BaseParser


class UserParser(BaseParser):
    def __init__(self):
        super().__init__('user')

    def files(self, **kwargs):
        self.subparser.add_parser('files', parents=[get_otp_parser()], **kwargs)

    def vms(self, **kwargs):
        self.subparser.add_parser('vms', parents=[get_otp_parser()], **kwargs)

    def networks(self, **kwargs):
        self.subparser.add_parser('networks', parents=[get_otp_parser()], **kwargs)

    def add_ssh(self, **kwargs):
        p = self.subparser.add_parser('add-ssh', parents=[get_otp_parser()], **kwargs)
        p.add_argument('--key-name', required=True)
        p.add_argument('--key', required=True)

    def get_ssh(self, **kwargs):
        p = self.subparser.add_parser('get-ssh', parents=[get_otp_parser()], **kwargs)
        p.add_argument('--key-name', default='')

    def remove_ssh(self, **kwargs):
        p = self.subparser.add_parser('remove-ssh', parents=[get_otp_parser()], **kwargs)
        p.add_argument('--key-name', required=True)


parser = UserParser()
arg_parser = parser.arg_parser


def main(**kwargs):
    subcommand = kwargs.pop('user_subcommand')
    if not subcommand:
        arg_parser.print_help()
    else:
        make_request('user', subcommand, data=kwargs)
