U
    Jh                     @   st   d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 G dd dZ
G dd dZG d	d
 d
ZG dd dZdS )    N)CallableIterableOptionalUnion)messages)HelpCategoryc                   @   s>   e Zd Zdeeee dddZeejej	f dddZ
dS )	ProArgumentN)	long_namehelp
short_namec                 K   s(   |d kr|fn||f| _ || _|| _d S N)namesr
   additional_args)selfr	   r
   r   kwargs r   7/usr/lib/python3/dist-packages/uaclient/cli/commands.py__init__	   s    zProArgument.__init__)targetc                 C   s   |j | jd| ji| j d S )Nr
   )add_argumentr   r
   r   )r   r   r   r   r   register   s    zProArgument.register)N)__name__
__module____qualname__strr   r   r   argparseArgumentParserZ_ArgumentGroupr   r   r   r   r   r      s    r   c                   @   s"   e Zd Zdeee dddZdS )!ProArgumentMutuallyExclusiveGroupFr   required	argumentsc                 C   s   || _ || _d S r   r   )r   r   r    r   r   r   r      s    z*ProArgumentMutuallyExclusiveGroup.__init__N)Fr   )r   r   r   boolr   r   r   r   r   r   r   r      s     r   c                   @   sB   e Zd Zd	ee ee ee ee dddZe	j
dddZdS )
ProArgumentGroupNr   titledescriptionr    mutually_exclusive_groupsc                 C   s   || _ || _|| _|| _d S r   r#   )r   r$   r%   r    r&   r   r   r   r   )   s    	zProArgumentGroup.__init__)parserc                 C   sd   |}| j r|| j | j}| jD ]}|| q | jD ](}|j|jd}|jD ]}|| qNq6d S )N)r   )r$   Zadd_argument_groupr%   r    r   r&   Zadd_mutually_exclusive_groupr   )r   r'   r   ZargumentgroupZ	new_groupr   r   r   r   7   s    


zProArgumentGroup.register)NNr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   (   s       r"   c                   @   sX   e Zd Zdd dddddfeeeeeee ed  ee	 e
d	dd	Zejd
ddZdS )
ProCommandc                  O   s   d S r   r   )argsr   r   r   r   <lambda>O       zProCommand.<lambda>Fr   Nr   	namer
   r%   actionpreserve_descriptionargument_groupssubcommandshelp_categoryhelp_positionc
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S r   r-   )
r   r.   r
   r%   r/   r0   r1   r2   r3   r4   r   r   r   r   J   s    zProCommand.__init__)
subparsersc                 C   s   |j | j| j| jd| _| jr(tj| j_| j	rJ| jj
| j	| j| j| jd | jD ]}|| j qP| jj| jd | jr| jjtjdd}| jD ]}|| qd S )N)r
   r%   )categoryr.   Zhelp_stringZposition)r/   command)r$   dest)Z
add_parserr.   r
   r%   r'   r0   r   ZRawDescriptionHelpFormatterZformatter_classr3   Zadd_help_entryr4   r1   r   Zset_defaultsr/   r2   Zadd_subparsersr   ZCLI_AVAILABLE_COMMANDS)r   r5   Zargument_groupr7   r   r   r   r   `   s0    


zProCommand.register)r   r   r   r   r   r!   r   r"   r   r   intr   r   Z_SubParsersActionr   r   r   r   r   r)   I   s$   r)   )r   typingr   r   r   r   Zuaclientr   Zuaclient.cli.parserr   r   r   r"   r)   r   r   r   r   <module>   s   
!