U
    Jh
                     @   s~   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 edde
fdefd	efgZG d
d deZG dd de jZdS )    N)OrderedDict)Enum)List
NamedTuple)messages	HelpEntrypositionnamehelp_stringc                   @   sj   e Zd ZG dd dZedejZedejZedej	Z
edejZedejZdd	 Zed
d ZdS )HelpCategoryc                   @   s   e Zd ZeedddZdS )zHelpCategory._Valuecodemsgc                 C   s   || _ || _d S Nr   )selfr   r    r   5/usr/lib/python3/dist-packages/uaclient/cli/parser.py__init__   s    zHelpCategory._Value.__init__N)__name__
__module____qualname__strr   r   r   r   r   _Value   s   r   Z
quickstartZsecurityZtroubleshoototherflagsc                 C   s   | j jS r   )valuer   r   r   r   r   __str__   s    zHelpCategory.__str__c                 C   s   | j jS r   )r   r   r   r   r   r   header   s    zHelpCategory.headerN)r   r   r   r   r   ZCLI_HELP_HEADER_QUICK_START
QUICKSTARTZCLI_HELP_HEADER_SECURITYSECURITYZCLI_HELP_HEADER_TROUBLESHOOTTROUBLESHOOTZCLI_HELP_HEADER_OTHEROTHERZ	CLI_FLAGSFLAGSr   propertyr   r   r   r   r   r      s    r   c                       s   e Zd Zeejg fejg fejg fejg fej	g fgZ
edeeeedddZdded fddZed	d
dZ fddZ  ZS )ProArgumentParserr   )categoryr	   r
   r   c                 C   s0   t |||d}|| j| kr,| j| | d S )N)r   r	   r
   )r   help_entriesappend)clsr&   r	   r
   r   entryr   r   r   add_help_entry/   s      z ProArgumentParser.add_help_entryT)use_main_helpc                   s   t  j|| || _d S r   )superr   r,   )r   r,   argskwargs	__class__r   r   r   =   s    zProArgumentParser.__init__)commandc                 C   s:   |  }|d z| | W n tk
r4   Y nX d S )Nz--help)splitr(   
parse_args
SystemExit)r   r2   Z	args_listr   r   r   print_help_for_commandA   s    
z(ProArgumentParser.print_help_for_commandc                    s   | j rt  S |  }| j D ]b\}}|d7 }|d|j7 }|d7 }t|dd dD ] }|d7 }|d|j	|j
7 }qZ|d7 }q"| jr|d7 }|| j7 }|d7 }|S )N
z{}:c                 S   s   | j S r   )r   )itemr   r   r   <lambda>T       z/ProArgumentParser.format_help.<locals>.<lambda>)keyz
  {:<17}{})r,   r-   format_helpZformat_usager'   itemsformatr   sortedr	   r
   Zepilog)r   Zhelp_outputr&   r=   r8   r0   r   r   r<   K   s     


zProArgumentParser.format_help)r   )r   r   r   r   r   r   r    r!   r"   r#   r'   classmethodr   intr+   boolr   r6   r<   __classcell__r   r   r0   r   r%   $   s&   
 
r%   )argparsecollectionsr   enumr   typingr   r   Zuaclientr   rA   r   r   r   ArgumentParserr%   r   r   r   r   <module>   s    