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Zd	ZejZejZejZed
ejZd8ddZd9ddZd:ddZd;ddZd<ddZ d=d"d#Z!ej"d$d%d>d&d'Z#d?d)d*Z$d@d,d-Z%d@d.d/Z&dAd6d7Z'dS )B    )annotationsN)Sequence)	lang_base)Prefix)CalledProcessError)cmd_output_bdocker
PRE_COMMITsg   
    /containers
    (?:/overlay-containers)?
    /([a-z0-9]{64})
    (?:/userdata)?
    /hostname
    return
str | Nonec               	   C  s   t tH tdd*} | D ]}t|}|r-|d    W  d    W  d    S qW d    n1 s8w   Y  W d    d S W d    d S 1 sPw   Y  d S )Nz/proc/1/mountinforb   )
contextlibsuppressFileNotFoundErroropen_HOSTNAME_MOUNT_REsearchdecode)flinem r   O/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/languages/docker.py_get_container_id"   s$   


r   pathstrc                 C  s   t  }|d u r	| S ztdd|\}}}W n ty   |  Y S w t|\}|d D ]}|d }|d }tj| |f|krF| ||  S q*| S )Nr   inspectMountsSourceDestination)	r   r   r   jsonloadsosr   
commonpathreplace)r   container_id_out	containermountsrc_pathto_pathr   r   r   _get_docker_path-   s    r-   sc                 C  s   t |   S )N)hashlibmd5encode	hexdigest)r.   r   r   r   r0   E   s   r0   prefixr   c                 C  s    t tj| j }d| S )Nzpre-commit-)r0   r#   r   basename
prefix_dirlower)r3   md5sumr   r   r   
docker_tagI   s   
r8   pullboolNonec                C  s8   dddt | dtf}|r|d7 }|d7 }t| | d S )Nr   buildz--tagz--label)z--pull).)r8   PRE_COMMIT_LABELr   	setup_cmd)r3   r9   cmdr   r   r   build_docker_imageN   s   rA   versionadditional_dependenciesSequence[str]c                 C  s@   t d| t d| t | t|}t| dd t| d S )Nr   Tr9   )r   assert_version_defaultassert_no_additional_depsenvironment_dirENVIRONMENT_DIRrA   r#   mkdir)r3   rB   rC   	directoryr   r   r   install_environment_   s
   rL   r   )maxsizec                  C  sf   t ddddd\} }}| dkrdS t|}zd|d	pd
v p'|d d d W S  ty2   Y dS w )Nr   systeminfoz--formatz{{ json . }}r   Fzname=rootlessSecurityOptionsr   hostsecurityrootless)r   r!   r"   getKeyError)retcoder(   r'   rO   r   r   r   _is_rootlessm   s   


rW   tuple[str, ...]c                   C  s<   t  rdS zdt  dt  fW S  ty   Y dS w )Nr   z-u:)rW   r#   getuidgetgidAttributeErrorr   r   r   r   get_docker_user   s   r]   colorc                 C  s   | rdS dS )N)z--ttyr   r   r^   r   r   r   get_docker_tty   s   r`   c                 C  s:   dddgt | dt dtt  dddR S )	Nr   runz--rmr_   z-vz
:/src:rw,Zz	--workdirz/src)r`   r]   r-   r#   getcwdr_   r   r   r   
docker_cmd   s   		rc   entryargs	file_argsis_localrequire_serialtuple[int, bytes]c          
      C  sP   t | dd t||^}}d|t| f}	tjg t|d|	|R |||dS )NFrE   z--entrypointr_   )rh   r^   )rA   r   hook_cmdr8   	run_xargsrc   )
r3   rd   re   rf   rg   rh   r^   	entry_execmd_rest	entry_tagr   r   r   run_hook   s   ro   )r
   r   )r   r   r
   r   )r.   r   r
   r   )r3   r   r
   r   )r3   r   r9   r:   r
   r;   )r3   r   rB   r   rC   rD   r
   r;   )r
   r:   )r
   rX   )r^   r:   r
   rX   )r3   r   rd   r   re   rD   rf   rD   rg   r:   rh   r:   r^   r:   r
   ri   )(
__future__r   r   	functoolsr/   r!   r#   recollections.abcr   
pre_commitr   pre_commit.prefixr   pre_commit.utilr   r   rI   r>   basic_get_default_versionget_default_versionbasic_health_checkhealth_checkno_envin_envcompileVERBOSEr   r   r-   r0   r8   rA   rL   	lru_cacherW   r]   r`   rc   ro   r   r   r   r   <module>   sB    










