o
    .&ßaó  ã                   @   s¾   d dl Zd dlZd dlZd dlZe e¡ZG dd„ deƒZ	dd„ Z
edkr]eejƒdkr9ejd Zeejd	 ƒZneejƒd	krFejd Zned
ejd   ƒ e d¡ ee
eeƒƒ dS dS )é    Nc                   @   s\   e Zd Zddd„Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	ddd„Z
ddd„ZdS )Ú	CompleterNc                 C   s<   |d ur|| _ ntj ¡ | _ | j  ¡ | _|  | jj¡| _d S ©N)	ÚdriverÚawscliÚ	clidriverÚcreate_clidriverÚcreate_help_commandÚ	main_helpÚ_get_documented_completionsÚ	arg_tableÚmain_options)Úselfr   © r   ú2/usr/lib/python3/dist-packages/awscli/completer.pyÚ__init__   s   
ÿzCompleter.__init__c                 C   s¢   |d u rt |ƒ}|d|…  ¡ }|d }dd„ |D ƒ}dd„ |D ƒ}|  | j|¡\}}|  ||¡\}	}
|d u r=|  ||¡S |	d u rI|  ||||¡S |  |	|
||¡S )Nr   éÿÿÿÿc                 S   s   g | ]	}|  d ¡s|‘qS ©ú-©Ú
startswith©Ú.0Úwr   r   r   Ú
<listcomp>%   ó    z&Completer.complete.<locals>.<listcomp>c                 S   s   g | ]	}|  d ¡r|‘qS r   r   r   r   r   r   r   &   r   )ÚlenÚsplitÚ_get_commandr	   Ú_complete_providerÚ_complete_commandÚ_complete_subcommand)r   ÚcmdlineÚpointÚargsÚcurrent_argÚcmd_argsÚoptsÚcmd_nameÚcmdÚsubcmd_nameÚsubcmdr   r   r   Úcomplete   s   zCompleter.completec                 C   sL   ||kr|r|   |j¡S g S | d¡r|  ||¡S |d ur$|   |j|¡S g S ©Nr   )r
   Úcommand_tabler   Ú_find_possible_options)r   Úcommand_nameÚcommand_helpr$   r&   r   r   r   r   3   s   ÿ
úÿzCompleter._complete_commandc                 C   s$   ||kr|  d¡r|  |||¡S g S r,   )r   r.   )r   r)   Úsubcmd_helpr$   r&   r   r   r   r    @   s   zCompleter._complete_subcommandc                 C   sH   |dkrg S |dkr| j j d¡}|d d d S |dkr"| j jjS g S )Nz--endpoint-urlz--outputÚcliÚoptionsÚoutputÚchoicesz	--profile)r   ÚsessionÚget_dataÚavailable_profiles)r   Úoption_nameÚcli_datar   r   r   Ú_complete_optionE   s   
zCompleter._complete_optionc                 C   s<   |  d¡r|  ||¡S |dkr|  | jj¡S |  | jj|¡S )Nr   Úaws)r   r.   r
   r	   r-   )r   r$   r&   r   r   r   r   O   s   
ÿÿzCompleter._complete_providerc                 C   sD   |d ur |j d ur |D ]}||j v r|j | }|| ¡ f  S qdS )N)NN)r-   r   )r   r0   Úcommand_argsr/   Úcmd_objr   r   r   r   Z   s   

þzCompleter._get_commandc                 C   sT   g }|  ¡ D ]!\}}t|ddƒrq|d ur| |¡sqt|ddƒr"q| |¡ q|S )NÚ_UNDOCUMENTEDFÚpositional_arg)ÚitemsÚgetattrr   Úappend)r   Útabler   ÚnamesÚkeyÚcommandr   r   r   r
   b   s   z%Completer._get_documented_completionsc                    s˜   t   | j¡}|d ur||  |j¡7 }|D ]}||kr(| d¡}||v r(| |¡ q| d¡‰ ‡ fdd„|D ƒ}t|ƒdkrJ|d |krJ|  |d ¡S |S )Nr   c                    s   g | ]}|  ˆ ¡rd | ‘qS )z--r   )r   Ún©Úcwr   r   r   ~   s    z4Completer._find_possible_options.<locals>.<listcomp>é   r   )Úcopyr   r
   r   ÚlstripÚremover   r;   )r   r$   r&   r1   Úall_optionsÚoptionÚstripped_optÚpossibilitiesr   rI   r   r.   o   s    ÿ

€
z Completer._find_possible_optionsr   )Ú__name__Ú
__module__Ú__qualname__r   r+   r   r    r;   r   r   r
   r.   r   r   r   r   r      s    

	

r   c                 C   s    t ƒ  | |¡}td |¡ƒ d S )Nz 
)r   r+   ÚprintÚjoin)r!   r"   r5   r   r   r   r+   „   s   r+   Ú__main__é   rK   é   zusage: %s <cmdline> <point>)Úawscli.clidriverr   ÚsysÚloggingrL   Ú	getLoggerrS   ÚLOGÚobjectr   r+   r   Úargvr!   Úintr"   rV   Úexitr   r   r   r   Ú<module>   s"   
p

÷