o
    Wi                     @  s  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	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ddd(ddZd)ddZ ej!d*ddZ"d+d!d"Z#d,d&d'Z$dS )-    )annotationsN)	Generator)Sequence)	lang_base)
envcontext)PatchesT)UNSET)Var)bin_dir)Prefix)
cmd_output)cmd_output_b)rmtreenode_env   )maxsizereturnstrc                   C  s,   t jdkrtjS tdd dD rdS tjS )Nwin32c                 s  s    | ]}t |V  qd S N)r   
exe_exists).0exe r   M/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/languages/node.py	<genexpr>!   s    z&get_default_version.<locals>.<genexpr>)nodenpmsystem)sysplatformCDEFAULTallr   r   r   r   get_default_version   s
   
r$   venvr   c                 C  s   t jdkrtdd| \}}}|  d}d}nt jdkr$t| }d}n| }d}d| fd	|fd
|fdtfdtfdtj| |dfdt| tj	t
dfffS )Ncygwincygpathz-wz\binlibr   ScriptsNODE_VIRTUAL_ENVNPM_CONFIG_PREFIXnpm_config_prefixNPM_CONFIG_USERCONFIGnpm_config_userconfig	NODE_PATHnode_modulesPATH)r   r    r   stripr
   r   ospathjoinpathsepr	   )r%   _win_venvinstall_prefixlib_dirr   r   r   get_env_patch'   s"   

r;   prefixr   versionGenerator[None]c                 c  sH    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_env=   s
   "rB   
str | Nonec                 C  sf   t | |$ tdddd\}}}|dkr d| W  d    S 	 W d    d S 1 s,w   Y  d S )Nr   z	--versionF)checkr   z`node --version` returned )rB   r   )r<   r=   retcoder7   r   r   r   health_checkD   s   $rF   additional_dependenciesSequence[str]Nonec           	      C  s  |  dsJ t| t|}tjdkrdtj| }tj	ddd|g}|t
jkr0|d|g t|  t| |C d}t| | td	d
| jd\}}}| | }d	dd|g|R }t| | |  drot| d t| W d    d S 1 sw   Y  d S )Nzpackage.jsonr   z\\?\z	-mnodeenvz
--prebuiltz--clean-srcz-n)r   installz--include=devz--include=prodz--ignore-prepublishz--no-progressz	--no-saver   pack)cwdrJ   z-gr0   )existsr   r?   r@   r   r    r3   r4   normpath
executabler!   r"   extendr   rB   	setup_cmdr   
prefix_dirr2   r   remove)	r<   r=   rG   rA   cmdlocal_install_cmdr7   pkgrJ   r   r   r   install_environmentM   s&   


"rW   )r   r   )r%   r   r   r   )r<   r   r=   r   r   r>   )r<   r   r=   r   r   rC   )r<   r   r=   r   rG   rH   r   rI   )%
__future__r   
contextlib	functoolsr3   r   collections.abcr   r   pre_commit.constants	constantsr!   
pre_commitr   pre_commit.envcontextr   r   r   r	   pre_commit.languages.pythonr
   pre_commit.prefixr   pre_commit.utilr   r   r   r@   basic_run_hookrun_hook	lru_cacher$   r;   contextmanagerrB   rF   rW   r   r   r   r   <module>   s6    


	