o
    ÙKÕiµ  ã                   @   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    
!