o
    :e                     @  sr   d dl m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Z	ddd	Z
ed
kr7ee
ejdd  dS dS )    )annotationsNPathargsvT.List[str]returnintc              	   C  s  g g}d}t jdd}|jddtdddd	 |jd
dddddd |jddddg dd |jdt jd| dd || }t|j}d }t|j	dkr[t|j
dkr[t|j	d }nt|j	t|j
krktd dS |jD ]}||krz|g g7 }qn|dd}|d  |g7  < qn|D ]d}|sqg }d }	d }
d}|D ]'}|dv rtj}	q|d v rtj}	tj}
q|	d us|
d ur||7 }q||g7 }qz!|jddd! tj||	|
t|dd"}|r|| }||j W q tjy   Y  dS w |r|  dS td#d$ |j	D d#d$ |j
D }|D ]G\}}d%}| s*| s'td& t| d%}nd}n| r<| j| jkr<d}|rR| rH|  tt|t| qdS )'Nz;;;zWrapper for add_custom_command)descriptionz-dz--directoryDTzWorking directory to cwd to)typemetavarrequiredhelpz-oz	--outputs+OzExpected output files)nargsr   r   r   z-Oz--original-outputs*zOutput files expected by CMake)r   r   defaultr   commandszA "z" separated list of commands)r   r      r   z5Length of output list and original output list differ" >   z>>>>   z&>>z&>)parentsexist_ok)stdoutstderrcwdcheckc                 S  s   g | ]}t |qS  r   ).0xr    r    F/usr/lib/python3.10/site-packages/mesonbuild/scripts/cmake_run_ctgt.py
<listcomp>Q   s    zrun.<locals>.<listcomp>Fz@Unable to find generated file. This can cause the build to fail:)argparseArgumentParseradd_argumentstrZ	REMAINDER
parse_argsr   	directorylenoutputsZoriginal_outputsprintr   replace
subprocessPIPESTDOUTmkdirrunwrite_bytesr   CalledProcessErrortouchzipexistsstatst_mtimeunlinkshutilcopyfile)r   r   Z	SEPARATORparserargsr*   Zdummy_targeticmdr   r   Zcapture_filejresout_fileZzipped_outputsexpectedZ	generatedZdo_copyr    r    r#   r3      s   




"



r3   __main__r   )r   r   r   r   )
__future__r   r%   r/   r<   syspathlibr   typingTr3   __name__exitargvr    r    r    r#   <module>   s   
[