
    8Sj                     &   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
\	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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
             >/mnt/mint/home/seanl/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   valuec                   ^ U (       d  gS[         S[         4S jmSn[        U R                  S5      5       HW  u  p#SR                  U4S jUR	                  SS	5      R                  S	5       5       5      nU(       d  MH  XS
:  a  SOSU-   -  nMY     U(       d  gUS
   R                  5       (       a  SU 3n[        U5      $ )NEmptyr   r   c                    SnSnU  HR  nUR                  5       (       a  X#-  nM  U(       d  M'  XS   R                  5       USS  R                  5       -   -  nSnMT     U(       a)  XS   R                  5       USS  R                  5       -   -  nU$ )Nr3   r   r5   )isalnumr6   lower)r   resultwordr.   s       r"   title_case_words1string_to_cpp_enum_name.<locals>.title_case_wordsF   s    Bzz||
q'--/DHNN,<<<  1gmmoQR(888Fr0   r3   /c              3   4   >#    U  H  nT" U5      v   M     g 7f)N )r7   srG   s     r"   r9   *string_to_cpp_enum_name.<locals>.<genexpr>U   s     c8b1+A..8bs   .+r   r!   )r   	enumerater=   r<   replaceisdigitmake_name_acceptable_cpp)r?   nameislash_segmentcombinedrG   s        @r"   string_to_cpp_enum_namerX   B   s    s s  D%ekk#&6777c8M8McSV8W8]8]^a8bcc8ESrX55D 8
 Aw4&z#D))r0   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   partsrE   s       r"   camel_casifyr\   `   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!   )rQ   lstrip)r1   r]   
snake_cases      r"   snake_casifyra   j   s-    ##C-J&&s+
r0   c                 ~   / n[        U 5       H  u  p#UR                  5       (       ac  US:  a]  XS-
     nUS-   [        U 5      :  a  XS-      OSnUR                  5       (       d  UR                  5       (       a  UR	                  S5        UR	                  UR                  5       5        M     SR                  U5      $ )Nr   r5   r3   r!   )rP   isupperlenislowerrZ   rD   r<   )r?   r[   index	characterprevious_characternext_characters         r"   title_case_to_snake_caserj   q   s    E%e,519!&qy!116SZ1GU19-RN!))++~/E/E/G/GS!Y__&' - 775>r0   member_countc                 .    U S::  a  gU S::  a  gU S::  a  gg)N   u8i  u16r&   u32u64rK   )rk   s    r"   underlying_type_for_enumrr   }   s&    tvz!r0   rT   c                     U S;   a  U  S3$ U $ )N)breakcharclasscontinuedefaultdeletefloatfor
initializeinlinemutable	namespaceoperatorregisterswitchtemplater!   rK   )rT   s    r"   rS   rS      s"      $ qzKr0   )NFFN)F)r   r   r   pathlibr   typingr   r   listr   boolr#   intr/   r>   rX   r\   ra   rj   rr   rS   rK   r0   r"   <module>r      s!  
   
   
 #!!#Yd  	
 
tTz	 c]@   YS YS Y*3 *3 *<S S S D S 	C 	C 	3 3 3 3 r0   