o
    Ü!dó  ã                   @   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ÚawscliZ	clidriverZcreate_clidriverÚcreate_help_commandÚ	main_helpÚ_get_documented_completionsÚ	arg_tableÚmain_options)Úselfr   © r   ú4usr/lib/python3.10/site-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_argZcmd_argsÚoptsÚcmd_nameÚcmdÚsubcmd_nameZ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   ZsessionÚget_dataZavailable_profiles)r   Úoption_nameZ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   Z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   r,   Z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 )NZ_UNDOCUMENTEDFZ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©Zcwr   r   r   ~   s    z4Completer._find_possible_options.<locals>.<listcomp>é   r   )Úcopyr
   r   r	   ÚlstripÚremover   r4   )r   r"   r#   r-   Zall_optionsÚoptionZstripped_optÚpossibilitiesr   r>   r   r*   o   s    ÿ

€
z Completer._find_possible_optionsr   )Ú__name__Ú
__module__Ú__qualname__r   r'   r   r   r4   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    r1   r   r   r   r'   „   s   r'   Ú__main__é   r?   é   zusage: %s <cmdline> <point>)Zawscli.clidriverr   ÚsysÚloggingr@   Ú	getLoggerrE   ZLOGÚobjectr   r'   r   Úargvr   Úintr    rH   Úexitr   r   r   r   Ú<module>   s"   
p

÷