%PDF- %PDF-
Direktori : /opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/ |
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/parse.py |
# -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT from __future__ import absolute_import import argparse from typing import Tuple, List, Dict, Any class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.HelpFormatter): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs, width=200, max_help_position=30) class ArgumentParser: """Helper to create parsers.""" def __init__(self, *args, **kwargs): self._parser = argparse.ArgumentParser(*args, **kwargs) self._subparser = self._parser.add_subparsers(dest='command', required=True, metavar='{command}') self._subparsers = {} # to allow global arguments addition self.add_argument = self._parser.add_argument def command(self, allow_abbrev=False, **kwargs): def decorator(method): self._subparsers[method.__name__] = self._subparser.add_parser( method.__name__.replace("_", "-"), allow_abbrev=allow_abbrev, **kwargs ) return method return decorator def argument(self, *args, **kwargs): def decorator(method): self._subparsers[method.__name__].add_argument(*args, **kwargs) return method return decorator def mutual_exclusive_group( self, arguments_params: List[Tuple[List[Any], Dict[str, Any]]], **kwargs, ): """ Create mutually exclusive group with arguments `argument_params` is a list of tuples with *args and **kwargs to create arguments in the group """ def decorator(method): group = self._subparsers[method.__name__].add_mutually_exclusive_group(**kwargs) for argument in arguments_params: group.add_argument(*argument[0], **argument[1]) return method return decorator def parse_args(self, args): return self._parser.parse_args(args)