o
    Wi                     @  s6  d dl mZ d dlZd dl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m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 d d
lmZ d dlmZ d dlmZ dZejZej Z!d/ddZ"ej#ddd0ddZ$d1ddZ%ej&d2d!d"Z'd3d%d&Z(d4d'd(Z)d4d)d*Z*d5d-d.Z+dS )6    )annotationsN)	Generator)Sequence)IO)	lang_base)
envcontext)PatchesT)UNSET)Var)Prefix)CalledProcessErrorrbenvfilenamestrreturn	IO[bytes]c                 C  s   t jd}|| dS )Nzpre_commit.resourcesrb)	importlib	resourcesfilesjoinpathopen)r   r    r   M/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/languages/ruby.py_resource_bytesio   s   r      )maxsizec                   C  s   t dd dD rdS tjS )Nc                 s  s    | ]}t |V  qd S N)r   
exe_exists).0exer   r   r   	<genexpr>"   s    z&get_default_version.<locals>.<genexpr>)rubygemsystem)allCDEFAULTr   r   r   r   get_default_version    s   r(   venvlanguage_versionr   c                 C  s   dt j| dfdtfdf}|dkr&|dt j| ddt jtdfff7 }n&|d| fdt j| ddt jt j| d	t jt j| dt jtdfff7 }|d
vrW|d|ff7 }|S )NGEM_HOMEgemsGEM_PATH)BUNDLE_IGNORE_CONFIG1r$   PATHbin
RBENV_ROOTshims>   r$   defaultRBENV_VERSION)ospathjoinr	   pathsepr
   )r)   r*   patchesr   r   r   get_env_patch(   s0   	
r;   prefixr   versionGenerator[None]c                 c  sJ    t | t|}tt|| d V  W d    d S 1 sw   Y  d S r   )r   environment_dirENVIRONMENT_DIRr   r;   )r<   r=   envdirr   r   r   in_envK   s
   "rB   destNonec              	   C  st   t | ,}tj|d}|| W d    n1 sw   Y  W d    d S W d    d S 1 s3w   Y  d S )N)fileobj)r   tarfiler   
extractall)r   rC   biotfr   r   r   _extract_resourceR   s   
"rJ   c                 C  sd   t | t|}td| d t| d| |tjkr0t	j
|d}td| td| d S d S )Nzrbenv.tar.gz.r   pluginszruby-download.tar.gzzruby-build.tar.gz)r   r?   r@   rJ   r7   shutilmover&   r'   r6   r8   )r<   r=   rA   plugins_dirr   r   r   _install_rbenvX   s   

rP   c              	   C  s@   zt | dd|f W d S  ty   t | dd|f Y d S w )Nr   downloadinstall)r   	setup_cmdr   )r<   r=   r   r   r   _install_rubyh   s
   rT   additional_dependenciesSequence[str]c                 C  s  t | t|}|dkr;t| | t| | t | d |tjkr&t| | t | d W d    n1 s6w   Y  t| |9 t | ddg| 	dR  t | dddd	d
dt
j|ddt
j|ddg	| 	d|R  W d    d S 1 s|w   Y  d S )Nr$   )r   init-)r   rehashr#   buildz.gemspecrR   z--no-documentz--no-format-executablez--no-user-installz--install-dirr,   z--bindirr1   z.gem)r   r?   r@   rP   rB   rS   r&   r'   rT   starr6   r7   r8   )r<   r=   rU   rA   r   r   r   install_environments   s6   


	"r\   )r   r   r   r   )r   r   )r)   r   r*   r   r   r   )r<   r   r=   r   r   r>   )r   r   rC   r   r   rD   )r<   r   r=   r   r   rD   )r<   r   r=   r   rU   rV   r   rD   ),
__future__r   
contextlib	functoolsimportlib.resourcesr   os.pathr6   rM   rF   collections.abcr   r   typingr   pre_commit.constants	constantsr&   
pre_commitr   pre_commit.envcontextr   r   r	   r
   pre_commit.prefixr   pre_commit.utilr   r@   basic_health_checkhealth_checkbasic_run_hookrun_hookr   	lru_cacher(   r;   contextmanagerrB   rJ   rP   rT   r\   r   r   r   r   <module>   s>    


#


