o
    e0	                     @  sx   d dl m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ZdddZdddZdS )    )annotationsN)Path   )run_tool   )detect_clangformat)version_compare)ExternalProgramfnamer   exelistT.List[str]checkboolcformat_verT.Optional[str]returnsubprocess.CompletedProcessc           	      C  s   d}|r|rt |drd}|ddg }n|  }|  j}t|ddt| g }|  j}||krCtd|  |rC|sC| | d	|_	|S )
NFz>=10Tz	--dry-runz--Werrorz-style=filez-izFile reformatted: r   )
r   
read_bytesstatst_mtime
subprocessrunstrprintwrite_bytes
returncode)	r
   r   r   r   Zclangformat_10originalbeforeretafter r    C/usr/lib/python3.10/site-packages/mesonbuild/scripts/clangformat.pyrun_clang_format   s   




r"   argsintc                 C  s   t  }|jddd |d |d || }t|j}t|j}t }|s4tdd	|  dS |j
rAtd	|d
d }nd }td	||t||j
|S )Nz--check
store_true)action	sourcedirbuilddirz#Could not execute clang-format "%s" r   zclang-formatT)Zsilent)argparseArgumentParseradd_argument
parse_argsr   r'   r(   r   r   joinr   r	   get_versionr   r"   )r#   parseroptionssrcdirr(   r   r   r    r    r!   r   -   s   




r   )
r
   r   r   r   r   r   r   r   r   r   )r#   r   r   r$   )
__future__r   r*   r   pathlibr   r   environmentr   Zmesonlibr   Zprogramsr	   typingTr"   r   r    r    r    r!   <module>   s   
