U e @s(ddlmZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl m Z dZd ZejZejZejZd d d d Zdd ddZdddddZdddddZdddddZdd ddddZddddd d!d"Zd#d d$d%Zd#d d&d'Zddddd d d d(d)d*d+ZdS),) annotationsN)Sequence) lang_base)Prefix)CalledProcessError) cmd_output_bdockerZ PRE_COMMITbool)returnc CsLz0tdd}d|kW5QRWSQRXWntk rFYdSXdS)N/proc/1/cgrouprbsdockerF)openreadFileNotFoundError)frI/opt/hc_python/lib/python3.8/site-packages/pre_commit/languages/docker.py _is_in_dockers  $rstrc CsptddT}|D]D}|dddkrtj|ddW5QRSqW5QRXtddS)Nr r :scpusetz2Failed to find the container ID in /proc/1/cgroup.) r readlinessplitospathbasenamestripdecode RuntimeError)rlinerrr_get_container_ids   :r!)rr cCsts |St}ztdd|\}}}Wntk r>|YSXt|\}|dD]8}|d}|d}tj||f|krT| ||SqT|S)NrinspectZMountsZSourceZ Destination) rr!rrjsonloadsrr commonpathreplace)rZ container_id_out containermountZsrc_pathZto_pathrrr_get_docker_path's   r+)sr cCst|S)N)hashlibmd5encode hexdigest)r,rrrr.@sr.r)prefixr cCs ttj|j}d|S)Nz pre-commit-)r.rrrZ prefix_dirlower)r1Zmd5sumrrr docker_tagDsr3None)r1pullr cCs8dddt|dtf}|r |d7}|d7}t||dS)Nrbuildz--tagz--label)z--pull).)r3PRE_COMMIT_LABELrZ setup_cmd)r1r5cmdrrrbuild_docker_imageIsr:z Sequence[str])r1versionadditional_dependenciesr cCs@td|td|t|t|}t|ddt|dS)NrTr5)rZassert_version_defaultZassert_no_additional_depsZenvironment_dirENVIRONMENT_DIRr:rmkdir)r1r;r< directoryrrrinstall_environmentZs    rAztuple[str, ...]cCs8zdtdtfWStk r2YdSXdS)Nz-u:r)rgetuidgetgidAttributeErrorrrrrget_docker_userhsrFcCs"dtdttdddfS) Nrrun--rmz-vz :/src:rw,Zz --workdirz/src)rrGrH)rFr+rgetcwdrrrr docker_cmdosrJztuple[int, bytes])r1entryargs file_argsis_localrequire_serialcolorr c CsDt|ddt||^}}d|t|f} tjt| ||||dS)NFr=z --entrypoint)rOrP)r:rZhook_cmdr3Z run_xargsrJ) r1rKrLrMrNrOrPZ entry_exeZcmd_restZ entry_tagrrrrun_hook|s  rQ) __future__rr-r#rtypingrZ pre_commitrZpre_commit.prefixrZpre_commit.utilrrr>r8Zbasic_get_default_versionZget_default_versionZbasic_health_checkZ health_checkZno_envZin_envrr!r+r.r3r:rArFrJrQrrrrs.