
    kj	                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJr      SS\\	   S\\	S4   S\
S\
S	\\S4   S
\\	   4S jjrS\	S
\4S jrS\	S
\	4S jrS\	S
\	4S jrSS\	S\
S
\	4S jjrS\S
\	4S jrS\	S
\	4S jrg)    N)Path)Optional)Unioncommandinputreturn_outputexit_on_failurecwdreturnc                 t   [        U5      [        L a  [        R                  OS nU(       a  [        R                  OS n[        R                  " XUSUS9 n UR                  US9u  pUR                  S:w  a1  U(       a   [        R                  " UR                  5         S S S 5        g  S S S 5        U(       a  WR                  5       $ g ! [         aR    UR                  [        R                  5        UR                  5         [        R                  " UR                  5         N{f = f! , (       d  f       N= f)NT)stdinstdouttextr
   )r   r   )typestr
subprocessPIPEPopencommunicate
returncodesysexitKeyboardInterruptsend_signalsignalSIGINTwaitstrip)
r   r   r   r	   r
   r   r   processoutput_s
             B/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Meta/Utils/utils.pyrun_commandr#      s      $E{c1JOOtE -Z__4F 
		'vDc	RV]	)!--E-:KV!!Q&"HHW//0 
S	R '	 
S ||~ ! 	).LLNHHW''(		) 
S	Rs2   D)AC
)D)
AD&#D)%D&&D))
D7stringc                     SnU  H%  nU[        U5      -   S-  nXS-  -   S-  nXS-	  -  nM'     XS-  -   S-  nXS-	  -  nXS-  -   S-  nU$ )z9Port of AK::string_hash that produces the same u32 value.r       
               )ord)r$   hchs      r"   string_hashr/   .   sp    	AR[J&r']j(	!V 
 
1f#AbLA	
2g*$AH    
dashy_namec                 P    SR                  S U R                  S5       5       5      $ )N c              3   d   #    U  H&  o(       d  M  US    R                  5       USS -   v   M(     g7f)r      N)upper).0parts     r"   	<genexpr>title_casify.<locals>.<genexpr>?   s-     X:O$SW-47==?T!"X-:Os   
0 0-)joinsplit)r1   s    r"   title_casifyr>   >   s"    77X*:J:J3:OXXXr0   c                    U R                  S5       Vs/ s H  o(       d  M  UPM     nnU(       d  gUS   /nUSS   H+  nUR                  US   R                  5       USS  -   5        M-     SR                  U5      $ s  snf )Nr;   r3   r   r5   )r=   appendr6   r<   )r1   r8   partsresults       r"   camel_casifyrC   B   sz    (..s3<3dtT3E<AhZFab	d1gmmoQR01 776? =s
   
A=A=trim_leading_underscoresc                 Z    U R                  SS5      nU(       a  UR                  S5      nU$ )Nr;   r!   )replacelstrip)r1   rD   
snake_cases      r"   snake_casifyrI   L   s-    ##C-J&&s+
r0   member_countc                 .    U S::  a  gU S::  a  gU S::  a  gg)N   u8i  u16r&   u32u64 )rJ   s    r"   underlying_type_for_enumrR   S   s&    tvz!r0   namec                     U S:X  a  gU $ )Nfloatfloat_rQ   )rS   s    r"   make_name_acceptable_cpprW   ]   s    wKr0   )NFFN)F)r   r   r   pathlibr   typingr   r   listr   boolr#   intr/   r>   rC   rI   rR   rW   rQ   r0   r"   <module>r]      s   
   
   
 #!!#Yd  	
 
tTz	 c]@   YS YS YS S S D S 3 3 3 3 r0   