o
    e
                     @  s   d dl mZ d dlZd dlZd dlZddlmZmZ ddlm	Z	m
Z
 ddlmZ d dlmZ d dlZd dlmZ d dlZdddZdddZdS )    )annotationsN   )detect_ninjadetect_scanbuild)get_cmd_line_fileCmdLineFileParser)windows_proof_rmtree)Path)literal_evalexelistT.List[str]srcdirr	   blddirprivdirlogdir
subprojdirargsreturnintc                 C  s~   t jt|d}| | }| dt|dt|g t  d|g }	t|t||g }
|
dkr0|
S t|	}
|
dkr=t| |
S )N)dirz	--excludez-oz-Cr   )tempfilemkdtempstrr   
subprocesscallr   )r   r   r   r   r   r   r   scandir	meson_cmd	build_cmdrc r   A/usr/lib/python3.10/site-packages/mesonbuild/scripts/scanbuild.py	scanbuild   s   &
r!   c                 C  s  t | d }t | d }|t | d  }| d }| dd  }|d }|d d }tjt|dd	 t|}t }	|	| d
|	d v rS|dd t|	d d
 D  d|	d v ri|dd t|	d d D  t	 }
|
syt
dd|
  dS t|
||||||S )Nr      r      zmeson-privatez
meson-logsr!   T)ignore_errorsZ
cross_fileZ
propertiesc                 S     g | ]}d t j| qS )z--cross-file=ospathabspath.0fr   r   r    
<listcomp>9       zrun.<locals>.<listcomp>Znative_filec                 S  r%   )z--native-file=r&   r*   r   r   r    r-   <   r.   z!Could not execute scan-build "%s" )r	   shutilrmtreer   r   r   readextendr
   r   printjoinr!   )r   r   Zbldpathr   r   r   r   r   cmddatar   r   r   r    run)   s(   
  r8   )r   r   r   r	   r   r	   r   r	   r   r	   r   r	   r   r   r   r   )r   r   r   r   )
__future__r   r   r0   r   environmentr   r   Zcoredatar   r   Zmesonlibr   pathlibr	   typingTastr
   r'   r!   r8   r   r   r   r    <module>   s   
