
    eCij                     b   d Z ddlZddlZddlZddlmZ  ej        d          Zej        	                    ej        
                    ej        d                             d         ZdZdZeej        eej        iZedediZd	 Zd
 Zd Z G d d          ZddZd Zd Zd Z e            ZdS )z7Simple color-enabled diagnositics reporting functions.
    N   )colored_loggerdiagnostics   z	warning: zerror: c                     t           |          }t          |          }|r||z  }t          j        ||          }t          j        |          }t
          j                            t           d| | d           d S )Nz: 
)	level_prefixeslevel_colorsr   with_bold_color	with_boldsysstderrwrite	tool_name)levelmsgargsprefixcolors        5/b/s/w/ir/x/w/install/emscripten/tools/diagnostics.pydiagr   "   s     % &
u
%	 
*C )%88& %%#*i2262322233333    c                 T    t          t          | g|R   t          j        d           d S )Nr   )r   ERRORr   exitr   r   s     r   errorr   1   s+    ucD(1+++++r   c                 ,    t          t          | g|R   d S N)r   WARNr   s     r   warnr!   6   s     tS4r   c                   B    e Zd ZU i Zeeef         ed<   ddZd Zd Z	dS )	WarningManagerwarningsTFc                 $    ||||d| j         |<   d S )N)enabledpart_of_allsharedr   )r$   )selfnamer&   r'   r(   r   s         r   add_warningzWarningManager.add_warning=   s'      DM$r   c                 $   t          t          |                    D ]}||         dk    r"| j                                        D ]}d|d<   1||                             d          sM||         dk    r*| j                                        D ]}|d         rd|d<   ||         dk    r"| j                                        D ]}d|d	<   ||                             d
          s||                             d          rp||                             dd          d         }|| j        v rE||                             d           }|| j        |         d	<   |rd| j        |         d<   d||<   W||                             d                              d          }||                             d           }|dk    r|| j        d         d<   d||<   || j        v r*|| j        |         d<   | j        |         d         sd||<   |S )Nz-wFr&   z-Wz-Wallr'   Tz-Werrorr   z-Werror=z-Wno-error==r   z-Wno- zwarn-absolute-pathszabsolute-pathsr(   )rangelenr$   values
startswithsplitremoveprefix)r)   cmd_argsiwarningwarning_namer&   s         r   capture_warningszWarningManager.capture_warningsF   s^   3x==!! + +	!		}++-- 	% 	%G$')

a[##D)) 	!		}++-- 	& 	&G]# &!%GI	!		!	!}++-- 	" 	"G!''

	!		
	+	+ x{/E/Em/T/T {((a0034=(( ..w777'18$-
%g
. :59DM,'	2(1+
a[--g66CCDIIlQK**7333g 
.	.	.5<&'	2		&	&18l#I.}\*84 	(1+	 
' Or   c                 ,   | j         |         }||z  dz   |                                                    dd          z   dz   }|d         r-|d         rt          |dz              d S t	          |           d S t
                              d|z              d S )	Nz [-W_-]r&   r   z
 [-Werror]zdisabled warning: )r$   lowerreplacer   r!   loggerdebug)r)   warning_typemessager   warning_infor   s         r   r7   zWarningManager.warningv   s    =.LT>V
#l&8&8&:&:&B&B3&L&L
Ls
RCI /	g	 cL !!!!!S					ll'#-.....r   NTTFF)
__name__
__module____qualname__r$   dictstr__annotations__r+   r9   r7    r   r   r#   r#   :   sa          (DdO      . . .`	/ 	/ 	/ 	/ 	/r   r#   TFc                 B    t                               | ||||           d S r   )managerr+   )r*   r&   r'   r(   r   s        r   r+   r+      s$    	dG[&%@@@@@r   c                 2    t           j        |          d         S )Nr&   )rN   r$   )r*   s    r   
is_enabledrP      s    		$			**r   c                 ,    t          j        | |g|R   d S r   )rN   r7   )rB   rC   r   s      r   r7   r7      s"    	/,/$//////r   c                 6    t                               |           S r   )rN   r9   )argvs    r   r9   r9      s    		!	!$	'	''r   rE   )__doc__loggingosr   r.   r   	getLoggerr@   pathsplitextbasenamerS   r   r    r   MAGENTAREDr
   r	   r   r   r!   r#   r+   rP   r7   r9   rN   rL   r   r   <module>r]      sn     				 



      		=	)	)GRW--chqk::;;A>	 		 	.
 	> 	+	94 4 4  
  E/ E/ E/ E/ E/ E/ E/ E/PA A A A+ + +0 0 0( ( ( .

r   