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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
ZdZejZejZejZd ddZejd!ddZejd"ddZ d#ddZ!dS )$    )annotationsN)	Generator)Sequence)	lang_base)
envcontext)PatchesT)Var)Prefix	dotnetenvbinvenvstrreturnr   c                 C  s    dt j| tt jtdfffS )NPATH)ospathjoinBIN_DIRpathsepr   )r    r   O/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/languages/dotnet.py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 )N)r   environment_dirENVIRONMENT_DIRr   r   )r   r   envdirr   r   r   in_env    s
   "r   Generator[str]c               	   c  sx    t  -} tj| d}t|d}|d W d    n1 s"w   Y  |V  W d    d S 1 s5w   Y  d S )Nznuget.configwzw<?xml version="1.0" encoding="utf-8"?><configuration>  <packageSources>    <clear />  </packageSources></configuration>)tempfileTemporaryDirectoryr   r   r   openwrite)tmpdirnuget_configfr   r   r   _nuget_config_no_sources'   s   
	"r(   additional_dependenciesSequence[str]Nonec                 C  s  t d| t d| t | t|}| d}t | dddddd| f | |}dd	 t|D }|s<t	d
|D ]}t
tj||.}dd | D \}	||	}
tjj|
}W d    n1 slw   Y  W d    n1 s{w   Y  td| j}|st	d|d|d  d}|d u rt	d|j}|st	dt }t | dddd|dtj|td||f
 W d    n1 sw   Y  q>d S )Ndotnetzpre-commit-buildpackz--configurationReleasez
--propertyzPackageOutputPath=c                 S  s   g | ]	}| d r|qS )z.nupkgendswith.0xr   r   r   
<listcomp>M   s    z'install_environment.<locals>.<listcomp>z+could not find any build outputs to installc                 s  s    | ]
}| d r|V  qdS )z.nuspecNr/   r1   r   r   r   	<genexpr>T   s    z&install_environment.<locals>.<genexpr>z{.*}z%could not parse namespace from nuspecz.//r   idz expected to find an "id" elementz"id" element missing tool nametoolinstallz--configfilez--tool-pathz--add-source)r   assert_version_defaultassert_no_additional_depsr   r   r   	setup_cmdr   listdirAssertionErrorzipfileZipFiler   namelistr#   xmletreeElementTreeparserematchgetroottagfindtextr(   r   )r   r   r)   r   	build_dir	nupkg_dirnupkgsnupkgr'   nuspecspectree	namespacetool_id_elementtool_idr&   r   r   r   install_environment7   sZ   


	rU   )r   r   r   r   )r   r	   r   r   r   r   )r   r   )r   r	   r   r   r)   r*   r   r+   )"
__future__r   
contextlibos.pathr   rE   r!   xml.etree.ElementTreerA   r>   collections.abcr   r   
pre_commitr   pre_commit.envcontextr   r   r   pre_commit.prefixr	   r   r   basic_get_default_versionget_default_versionbasic_health_checkhealth_checkbasic_run_hookrun_hookr   contextmanagerr   r(   rU   r   r   r   r   <module>   s2    
