
    wiP                        d dl m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Ze	j        Ze	j        Zd#dZd$dZej        d%d            Zd&d"ZdS )'    )annotationsN)	Generator)Sequence)	lang_base)
envcontext)PatchesTUNSET)Prefix)cmd_output_bjuliaenvprefixr   entrystrargsSequence[str]	file_argsis_localboolrequire_serialcolorreturntuple[int, bytes]c                   t          j        ||          }|r|d         n|                     |d                   }dd|g|dd          R }t          j        ||||          S )Nr   julia--startup-file=no   )r   r   )r   hook_cmdpath	run_xargs)	r   r   r   r   r   r   r   cmdscripts	            j/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/languages/julia.pyrun_hookr$      s{    " 
UD
)
)C8SVVV[[Q%8%8F'
:#abb'
:
:C%	       
target_dirversionr   c                    d| fdt           ffS )NJULIA_LOAD_PATHJULIA_PROJECTr	   )r&   r'   s     r#   get_env_patchr+   1   s    	J'	%  r%   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+   )r   r'   envdirs      r#   in_envr1   9   s      &vHHF	M&'22	3	3                   s   AAAadditional_dependenciesNonec           	        t          j        | t          |          }t          | |          5  t	          j        |d           d}d}|D ]N}|                     |          }t          j                            |          s7t          j	        ||           d} |s@t          t          j                            |d          d                                           d}|D ]L}	|                     |	          }
t          j                            |
          s7t          j	        |
|            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 )NT)exist_ok)zJuliaProject.tomlProject.tomlFr6   a)zJuliaManifest.tomlzManifest.tomla  
        @assert length(ARGS) > 0
        hook_env = ARGS[1]
        deps = join(ARGS[2:end], " ")

        # We prepend @stdlib here so that we can load the package manager even
        # though `get_env_patch` limits `JULIA_LOAD_PATH` to just the hook env.
        pushfirst!(LOAD_PATH, "@stdlib")
        using Pkg
        popfirst!(LOAD_PATH)

        # Instantiate the environment shipped with the hook repo. If we have
        # additional dependencies we disable precompilation in this step to
        # avoid double work.
        precompile = isempty(deps) ? "1" : "0"
        withenv("JULIA_PKG_PRECOMPILE_AUTO" => precompile) do
            Pkg.instantiate()
        end

        # Add additional dependencies (with precompilation)
        if !isempty(deps)
            withenv("JULIA_PKG_PRECOMPILE_AUTO" => "1") do
                Pkg.REPLMode.pkgstr("add " * deps)
            end
        end
        r   r   z-ez--cwd)r   r.   r/   r1   osmakedirsr   isfileshutilcopyopenjoincloser   
prefix_dir)r   r'   r2   r0   project_namesproject_foundproject_nameproject_filemanifest_namesmanifest_namemanifest_file
julia_codes               r#   install_environmentrJ   @   s   
 &vHHF		 	  ?
 ?
 	FT****=) 	 	L!;;|44L7>>,// Kf--- M  	Dfn55s;;AACCC A+ 	 	M"KK66M7>>-00 Kv...
4 	($
D&	
$	
 	
 	
 !	
 	
 	
w?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
s   DEEE)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r&   r   r'   r   r   r   )r   r   r'   r   r   r,   )r   r   r'   r   r2   r   r   r3   )
__future__r   
contextlibr9   r<   collections.abcr   r   
pre_commitr   pre_commit.envcontextr   r   r
   pre_commit.prefixr   pre_commit.utilr   r/   basic_health_checkhealth_checkbasic_get_default_versionget_default_versionr$   r+   contextmanagerr1   rJ    r%   r#   <module>rX      sK   " " " " " "     				  % % % % % % $ $ $ $ $ $             , , , , , , * * * * * * ' ' ' ' ' ' $ $ $ $ $ $ ( ( ( ( ( (+9    8       E
 E
 E
 E
 E
 E
r%   