B
    ó±ô`^
  ã               @   st   d Z ddlmZmZmZ eZddlZddlm	Z
 ddlmZ ddlmZ ddlmZ d	d
lmZ G dd„ deƒZdS )zBSource provider for a content root managed by git version control.é    )Úabsolute_importÚdivisionÚprint_functionNé   )Útypes)ÚGit)Úto_bytes)ÚSubprocessErroré   )ÚSourceProviderc               @   s0   e Zd ZdZedd„ ƒZdd„ Zedd„ ƒZdS )	Ú	GitSourcezBSource provider for a content root managed by git version control.c             C   s   t j t j | d¡¡S )zBReturn True if the given path is a content root for this provider.z.git)ÚosÚpathÚexistsÚjoin)r   © r   úY/home/dcms/DCMS/lib/python3.7/site-packages/ansible_test/_internal/provider/source/git.pyÚis_content_root   s    zGitSource.is_content_rootc          
      sÀ   |   |¡}yt|ƒ ¡ ‰W nX tk
rr   || jkr6‚ tj || j¡tjj ‰ t| jƒ ¡ ‰‡ fdd„ˆD ƒ‰Y nX x4ˆD ],‰| 	‡fdd„|   tj 
|ˆ¡¡D ƒ¡ qzW ‡fdd„|D ƒ}|S )z@Return the list of available content paths under the given path.c                s$   g | ]}|  ˆ ¡rtj |ˆ ¡‘qS r   )Ú
startswithr   r   Úrelpath)Ú.0Úp)Úrel_pathr   r   ú
<listcomp>3   s    z'GitSource.get_paths.<locals>.<listcomp>c             3   s   | ]}t j ˆ |¡V  qd S )N)r   r   r   )r   r   )Úsubmodule_pathr   r   ú	<genexpr>6   s    z&GitSource.get_paths.<locals>.<genexpr>c                s   g | ]}|ˆ kr|‘qS r   r   )r   r   )Úsubmodule_pathsr   r   r   9   s    )Ú_GitSource__get_pathsr   Zget_submodule_pathsr	   Úrootr   r   r   ÚsepÚextendr   )Úselfr   Úpathsr   )r   r   r   r   Ú	get_paths!   s    


,zGitSource.get_pathsc             C   sJ   t | ƒ}| dddg¡}| dg¡}tt|ƒt|ƒ ƒ}dd„ |D ƒ}|S )z@Return the list of available content paths under the given path.z--cachedz--othersz--exclude-standardz	--deletedc             S   s,   g | ]$}t j t|ƒ¡r$|t jj n|‘qS r   )r   r   Úisdirr   r   )r   r   r   r   r   r   F   s    z)GitSource.__get_paths.<locals>.<listcomp>)r   Zget_file_namesÚsortedÚset)r   Úgitr"   Zdeleted_pathsr   r   r   Z__get_paths=   s    zGitSource.__get_pathsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   r#   r   r   r   r   r   r      s   r   )r+   Ú
__future__r   r   r   ÚtypeÚ__metaclass__r   Ú r   Útr'   r   Úencodingr   Úutilr	   r   r   r   r   r   r   Ú<module>   s   