o
    (f                     @   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                   @   sD   e Zd Z	d
dededee fddZdeejej	f fdd	Z
dS )ProArgumentN	long_namehelp
short_namec                 K   s(   |d u 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.registerr   )__name__
__module____qualname__strr   r   r   argparseArgumentParser_ArgumentGroupr   r   r   r   r   r      s    
r   c                   @   s(   e Zd Z		ddedee fddZdS )	!ProArgumentMutuallyExclusiveGroupFr   required	argumentsc                 C   s   || _ || _d S r   )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                
   @   sP   e Zd Z				ddee dee dee dee fddZd	e	j
f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   r   r   r   )   s   	
zProArgumentGroup.__init__parserc                 C   sd   |}| j r|| j | j}| jD ]}|| q| jD ]}|j|jd}|jD ]}|| q'qd S )N)r   )r#   add_argument_groupr$   r    r   r%   add_mutually_exclusive_groupr   )r   r&   r   argumentgroup	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                   @   sh   e Zd Zdd dddddfdeded	ed
ededee ded  dee	 de
fddZdejfddZdS )
ProCommandc                  O   s   d S r   r   )argsr   r   r   r   <lambda>O   s    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$   r0   r1   r2   r3   r4   r5   )
r   r/   r
   r$   r0   r1   r2   r3   r4   r5   r   r   r   r   J   s   
zProCommand.__init__
subparsersc                 C   s   |j | j| j| jd| _| jrtj| j_| j	r%| jj
| j	| j| j| jd | jD ]}|| j q(| jj| jd | jrP| jjtjdd}| jD ]	}|| qHd S d S )N)r
   r$   )categoryr/   help_stringposition)r0   command)r#   dest)
add_parserr/   r
   r$   r&   r1   r   RawDescriptionHelpFormatterformatter_classr4   add_help_entryr5   r2   r   set_defaultsr0   r3   add_subparsersr   CLI_AVAILABLE_COMMANDS)r   r6   argument_groupr:   r   r   r   r   `   s4   


zProCommand.register)r   r   r   r   r   r!   r   r"   r   r   intr   r   _SubParsersActionr   r   r   r   r   r,   I   s6    	

r,   )r   typingr   r   r   r   uaclientr   uaclient.cli.parserr   r   r   r"   r,   r   r   r   r   <module>   s    
!