
    wit                    z   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	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!        Z" ej#        d          d'd            Z$d(dZ%d)dZ&ej'        d*d            Z(d+d!Z)d,d$Z*d-d&Z+dS ).    )annotationsN)	Generator)Sequence)	lang_base)parse_shebang)
envcontext)PatchesT)Var)Prefix)cmd_output_b)make_executable)win_exerustenv   )maxsizereturnstrc                 X    t          dddd          d         dk    rdS t          j        S )Ncargo	--versionF/)checkcwdr   system)r   CDEFAULT     i/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/languages/rust.pyget_default_versionr       s2     G[3???BaGGxyr   language_versionc                *    | t           j        k    rdS | S )z=Transform the language version into a rust toolchain version.stable)r   r   )r!   s    r   _rust_toolchainr$   +   s    19$$xr   
target_dirversionr	   c                    dt           j                            | d          t           j        t	          d          ffg|dk    rdt          |          ffndR S )NPATHbinr   RUSTUP_TOOLCHAINr   )ospathjoinpathsepr
   r$   )r%   r&   s     r   get_env_patchr/   3   se    	"',,z5112:s6{{KL ("" !/'":":;==(*  r   prefixr   Generator[None]c              #     K   t          j        | t          |          }t          t	          ||                    5  d V  d d d            d S # 1 swxY w Y   d S )N)r   environment_dirENVIRONMENT_DIRr   r/   )r0   r&   envdirs      r   in_envr6   ?   s      &vHHF	M&'22	3	3                   s   AAAadditional_dependenciesset[str]Nonec                    g }|D ]9}|                     d          \  }}}| d|pd }|                    |           :t          j        | ddg|R            d S )N:@*r   add)	partitionappendr   	setup_cmd)r0   r7   cratesdepname_speccrates           r   _add_dependenciesrH   F   s     F&  c**a''$+#''e% 9& 9 9:::::r   	toolchainr5   c           
        t          j                    5 }t          d|fd|ff          5  t          j        d          t
          j        dk    rd}nd}t          j        	                    |          }t          j                            |t          d                    }t          |d          5 }t          j        ||           d d d            n# 1 swxY w Y   t#          |           t%          |d	d
ddd           t%          dddd|            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N
CARGO_HOMERUSTUP_HOMErustupwin32zhttps://win.rustup.rs/x86_64zhttps://sh.rustup.rszrustup-initwbz-yz--quietz--no-modify-pathz--default-toolchainnonerI   installz--no-self-update)tempfileTemporaryDirectoryr   r   find_executablesysplatformurllibrequesturlopenr+   r,   r-   r   openshutilcopyfileobjr   r   )rI   r5   
rustup_dirurlresprustup_initfs          r   install_rust_with_toolchainrb   S   s   		$	&	& *,/-1LMNN 	 	,X66><7**8CC0C~--c22 gll:w}7M7MNN+t,, 0&tQ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,,, y2D)6  
 +y2D  -	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sY   D7BD0CDCDC9DD7D#	#D7&D#	'D77D;>D;Sequence[str]c           	     L   t          j        | t          |          }d |D             }t          |          |z
  }dh}|D ]e}|                    d          }|                    d          \  }}	}
|
dk    r|                    |d|
f           O|                    |f           ft          j                    5 }|	                    t          | |                     |dk    rht          t          |          |           |	                    t          j                              }|	                    t          d|ff                     t!          |          d	k    rt#          | |           |D ]}t%          d
ddd|g|R d| j        i 	 d d d            d S # 1 swxY w Y   d S )Nc                <    h | ]}|                     d           |S )cli:)
startswith).0rC   s     r   	<setcomp>z&install_environment.<locals>.<setcomp>   s9       #..2H2H  r   )z--path.rf   r;    r   r   rL   r   r   rQ   z--binsz--rootr   )r   r3   r4   setremoveprefixr?   r>   
contextlib	ExitStackenter_contextr6   rb   r$   rR   rS   r   lenrH   r   
prefix_dir)r0   r&   r7   r5   cli_depslib_depspackages_to_installcli_deppackagerE   crate_versionctxtmpdirargss                 r   install_environmentr|   q   s7   
 &vHHF .  H *++h6H1@0A 0 0&&v..$+$5$5c$:$:!MB##Wk=$IJJJJ##WJ////				 3&11222h'(@(@&III&&x'B'D'DEEFj=&*A)CDDEEEx==1fh///' 	 	DHhAE  %   	                 s   8CFF F)r   r   )r!   r   r   r   )r%   r   r&   r   r   r	   )r0   r   r&   r   r   r1   )r0   r   r7   r8   r   r9   )rI   r   r5   r   r   r9   )r0   r   r&   r   r7   rc   r   r9   ),
__future__r   rn   	functoolsos.pathr+   r[   rU   rR   urllib.requestrW   collections.abcr   r   pre_commit.constants	constantsr   
pre_commitr   r   pre_commit.envcontextr   r	   r
   pre_commit.prefixr   pre_commit.utilr   r   r   r4   basic_health_checkhealth_checkbasic_run_hookrun_hook	lru_cacher    r$   r/   contextmanagerr6   rH   rb   r|   r   r   r   <module>r      s   " " " " " "           



      % % % % % % $ $ $ $ $ $                         $ $ $ $ $ $ , , , , , , * * * * * * % % % % % % $ $ $ $ $ $ ( ( ( ( ( ( + + + + + + # # # # # #+# Q
 
 
  
       	 	 	 	    
; 
; 
; 
;   </ / / / / /r   