B
    CWB                 @   s  d dl mZmZmZ d dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dlZd dlZd dlmZ ddlmZ dd	lmZ G d
d deZdd Zdd ZG dd dejZdddZdZdd Zdd Z d ddZ!d!ddZ"e d Z#[dS )"    )absolute_importprint_functionunicode_literalsN)OrderedDict)dirname)iter_entry_points)ShowHelp   )get_versions)print_colorsc               @   s*   e Zd ZdZd
ddZdd Zdd Zd	S )colorz<
    Deprecated: please use clyent.colors.Color instead
     c             C   s   d S )Nr   )selftextZ
color_listr   r   .lib/python3.7/site-packages/clyent/__init__.py__init__   s    zcolor.__init__c             C   s   d S )Nr   )r   r   r   r   	__enter__   s    zcolor.__enter__c             C   s   d S )Nr   )r   errZtype_tbr   r   r   __exit__   s    zcolor.__exit__N)r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s   
r   c             C   s   t |  }|dr&|d | |d< t| tjrh|dd  i }x|  D ]}|j||j	< qLW ||d< dd | j
jd  D }|t| t| j|d< |d dkr|ds| j	 |d< |dd  |d	d  |S )
Nhelpchoicesc             S   s   i | ]\}}||qS r   r   ).0kvr   r   r   
<dictcomp>-   s    zjson_action.<locals>.<dictcomp>actionZstoremetavartypedefault)dictZ_get_kwargsget
isinstanceargparseZ_SubParsersActionpopZ_get_subactionsr   destZ	containerZ_registriesitemsr"   r   upper)r    Za_datar   ZchoiceZregr   r   r   json_action    s     
r,   c             C   s:   | j | jdd | jD d}| jr6dd | jD |d< |S )Nc             S   s    g | ]}|j tjkrt|qS r   )r   r'   SUPPRESSr,   )r   ar   r   r   
<listcomp>:   s    zjson_group.<locals>.<listcomp>)descriptiontitleZactionsc             S   s   g | ]}t |qS r   )
json_group)r   gr   r   r   r/   >   s    groups)r0   r1   _group_actions_action_groups)groupZgrp_datar   r   r   r2   7   s    r2   c               @   s$   e Zd ZdejfddZdd ZdS )	json_helpr   c             K   s   t jj| f||d| d S )N)nargsr   )r'   Actionr   )r   r9   r   kwargsr   r   r   r   C   s    zjson_help.__init__c             C   st   d| _ |j| dd  |j|jd}g |d< x&|jD ]}|jr6|d t| q6W t	j
|tjdd tdd S )Nr      )progZusager0   epilogr4      )indent)r9   r=   Zformat_usager0   r>   r6   r5   appendr2   jsondumpsysstdout
SystemExit)r   parser	namespacevaluesZoption_stringZdocsr7   r   r   r   __call__F   s    
zjson_help.__call__N)r   r   r   r'   r-   r   rJ   r   r   r   r   r8   B   s   r8   c          	   C   s   |  d}|jdddddd |jddd	d
dd |jdddddtjtjd |jdddddtjd |jdddddd |jdddd	dd | jdtd |r| jdd d!d"|f d# d S )$Noutputz--show-tracebackZstore_constalwaysZttyzGShow the full traceback for chalmers user errors (default: %(default)s))r    constr#   r   z--hide-tracebackneverZshow_tracebackz0Hide the full traceback for chalmers user errors)r    rM   r)   r   z-vz	--verbosez&print debug information ot the consoleZ	log_level)r    r   r)   r#   rM   z-qz--quietz(Only show warnings or errors the console)r    r   r)   rM   z--colorzalways display with colors)r    r#   rM   r   z
--no-colorr   znever display with colors)r    r)   rM   r   z--json-help)r    z-Vz	--versionversionz*%%(prog)s Command line client (version %s))r    rO   )Zadd_argument_groupadd_argumentloggingINFODEBUGZWARNINGr8   )rG   rO   Zogroupr   r   r   add_default_argumentsV   s,    


rT   )z.pyz.pycz.pyoc             C   s   dd t t| jgD S )Nc             S   s    g | ]\}}}| d s|qS )_)
startswith)r   rU   namer   r   r   r/   u   s    z)get_sub_command_names.<locals>.<listcomp>)pkgutiliter_modulesr   __file__)moduler   r   r   get_sub_command_namest   s    r\   c             c   s:   t | }t| jp| j|d}x|D ]}t||V  q"W d S )N)fromlist)r\   
__import____package__r   getattr)r[   namesZthis_modulerW   r   r   r   get_sub_commandsx   s    
rb   c       	      C   s   | j ddd}|r.xt|D ]}|| qW |rTx t|D ]}| }|| q<W x0|j D ]"\}}|j|d |jdt	d q`W d S )NZCommands )r1   r!   )sub_command_namez--json-help)r    )
Zadd_subparsersrb   
add_parserr   loadr   r*   Zset_defaultsrP   r8   )	rG   r[   Zentry_point_nameZ
subparsersZcommand_moduleZentry_pointre   key
sub_parserr   r   r   add_subparser_modules   s    ri   Tc             C   s`   t d}|dt| dd  y
| | S  tk
rZ   | j  |rRtdndS Y nX d S )Nz
cli-loggerzCommand 'chalmers %s'rd   ?r	   )	rQ   Z	getLoggererrorr`   mainr   rh   Z
print_helprF   )argsexitZ
cli_loggerr   r   r   run_command   s    



ro   rO   )N)NN)T)$Z
__future__r   r   r   r'   collectionsr   imprB   rQ   osos.pathr   Zpkg_resourcesr   rX   rD   Zclyent.errorsr   Z_versionr
   Zcolorsr   objectr   r,   r2   r:   r8   rT   ZMODULE_EXTENSIONSr\   rb   ri   ro   __version__r   r   r   r   <module>   s2   



