
    <h!                    "   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  SSK	J
r
JrJrJrJrJr  S SKJr  SSKJrJr  \R*                  (       a  S SKrSS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jr SS jr!SS jr"g)    )annotationsN)glob   )open_wrapdburlread_and_decompressWrapExceptionget_releasesget_releases_dataparse_patch_url)Path   )mesonlibmsubprojectsc                   U R                  SSS9nSUl        UR                  SSS9nUR                  SS	S
SS9  UR	                  [
        S9  UR                  SSS9nUR                  SS	S
SS9  UR                  S5        UR	                  [        S9  UR                  SSS9nUR                  SS	S
SS9  UR                  S5        UR	                  [        S9  [        R                  " U5      nUR	                  [        R                  S9  UR                  SSS9nUR                  SS	S
SS9  UR                  S5        UR	                  [        S9  UR                  SSS9nUR                  SS	S
SS9  UR	                  [        S9  UR                  SSS9nUR                  S5        UR	                  [        S9  UR                  SSS9nUR                  SS	S
SS9  UR	                  [        S9  g )NCommandscommand)titledestTlistzshow all available projects)helpz--allow-insecureF
store_truez"Allow insecure server connections.)defaultactionr   	wrap_funcsearchzsearch the db by namenameinstallzinstall the specified projectinfoz$show available versions of a projectstatusz6show installed and available versions of your projectspromotez.bring a subsubproject up to the master projectproject_pathz	update-dbz:Update list of projects available in WrapDB (Since 0.61.0))add_subparsersrequired
add_parseradd_argumentset_defaultslist_projectsr   r   r   add_wrap_update_parserrunr   r    r!   	update_db)parser
subparsersps      y/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/wrap/wraptool.pyadd_argumentsr0      s   &&Zi&HJJf+HIANN%u\<  >NN]N+h-DEANN%u\<  >NN6NNVN$i.MNANN%u\<  >NN6NNWN%++J7ANN\--N.f+QRANN%u\<  >NN6NNTN"h-efANN%u\<  >NNVN$i.^_ANN>"NNWN%k0lmANN%u\<  >NNYN'    c                r    [        U R                  5      nUR                  5        H  n[        U5        M     g )N)r	   allow_insecurekeysprint)optionsreleasesr.   s      r/   r(   r(   C   s)    G223H]]_a r1   c                >   U R                   n[        U R                  5      nUR                  5        Hh  u  p4UR	                  U5      S:w  a  [        U5        M'  UR                  S/ 5       H+  nUR	                  U5      S:w  d  M  [        SU SU 35        M-     Mj     g )Ndependency_nameszDependency z found in wrap )r   r	   r3   itemsfindr5   get)r6   r   r7   r.   r   deps         r/   r   r   H   s    <<DG223H>>#66$<2!Hxx 2B788D>R'KuOA3?@ 8	 $r1   c                    [        U5      nUR                  U 5      nU(       d  [        SU  S35      eUS   S   nUR                  SS5      u  pVXV4$ )NWrap  not found in wrapdbversionsr   -r   )r	   r=   r   rsplit)r   r3   r7   r   latest_versionversionrevisions          r/   get_latest_versionrH   S   s_    N+H<<DeD6)=>??*%a(N&--c15Gr1   c                   U R                   n[        R                  R                  S5      (       d  [	        S5      e[        R                  R                  [        R                  R                  SU5      5      (       a  [	        S5      e[        R                  R                  SUS-   5      n[        R                  R                  U5      (       a  [	        S5      e[        XR                  5      u  p4[        SU SU SU S	U S3	U R                  S
S
5      n[        US5       nUR                  [        U5      5        S S S 5        [        SU SU SU 35        g ! , (       d  f       N#= f)NsubprojectszISubprojects dir not found. Run this script in your source root directory.z5Subproject directory for this project already exists..wrapzWrap file already exists.z!https://wrapdb.mesonbuild.com/v2/_rC   /Twbz
Installed z	 version z
 revision )r   ospathisdir
SystemExitjoinexistsrH   r3   r   openwriter   r5   )r6   r   wrapfilerF   rG   urlfs          r/   r   r   \   s-   <<D77==''dee	ww}}RWW\\-677PQQww||M4'>:H	ww~~h455,T3I3IJW
<TF!G9AhZWXY]X^^cdfmf|f|  C  EI  JC	h		#C() 
	JtfIgYj

CD 
	s   #E
E)c                ,   [         R                  " S S9nUR                  U 5         US   n US   n[        U5      u  pEUS   nXEUS   US   U4$ ! [         a    [	        S5      ef = f! [         a     [        R                  " US   5      nSu  pV NNf = f)	N)interpolationz	wrap-filez1Not a wrap-file, cannot have come from the wrapdb	patch_urlpatch_filenamesource_filename)1N	directory)configparserConfigParserreadKeyErrorr   r   r   search_version)rW   cp	wrap_datar\   branchrG   r]   s          r/   get_current_versionri   k   s    		"	"	6BGGHQ{O	
5k*	 +95"#34Y{3Y?P5QSaaa  QOPPQ  - ((3D)EF#, .-s   A A) A&)'BBc                    U R                   n[        U R                  5      nUR                  U5      nU(       d  [	        SU S35      e[        SU S35        US    H  n[        SU5        M     g )Nr@   rA   zAvailable versions of :rB    )r   r	   r3   r=   r   r5   )r6   r   r7   r   vs        r/   r   r      sk    <<DG223H<<DeD6)=>??	"4&
*+*c1 r1   c                (   [         R                  R                  U 5      (       a/  U R                  S5      (       d   e[        R
                  " X5        g [         R                  R                  U 5      (       a  [         R                  R                  U 5      n[         R                  R                  X5      n[         R                  R                  U5      (       a  [        SU S35      e[        R                  " X[        R                  " S5      S9  g g )NrK   zOutput dir z$ already exists. Will not overwrite.rJ   )ignore)rO   rP   isfileendswithshutilcopyrQ   basenamerS   rT   rR   copytreeignore_patterns)	from_path
spdir_name
sproj_name	outputdirs       r/   do_promotionr{      s    	ww~~i  !!'****I*	y	!	!WW%%i0
GGLL8	77>>)$${9+5YZ[[	V5K5KM5Z[ 
"r1   c                   U R                   nSn[        R                  " U5      nUR                  S[        R
                  5      nUR                  5        H  nXE;   d  M
  [        XB5          g    X;  a  [        SU S35      eX1   n[        U5      S:  aH  [        SU S3[        R                  S9  U H  n[        U[        R                  S9  M     [        S5      e[        US	   U5        g )
NrJ   rM   zSubproject z not found in directory tree.r   z"There is more than one version of z/ in tree. Please specify which one to promote:
filer   )r"   r   detect_subprojectsreplacerO   sepvaluesr{   rR   lenr5   sysstderr)r6   argumentrx   sprojssystem_native_path_argumentmatchesss          r/   r!   r!      s    ##HJ((4F #+"2"23"?==?&14A # ;xj0MNOOG
7|a28*<lmtwt~t~A!#**% mZ(r1   c                   [        S5        [        S5       H  n[        R                  R	                  U5      S S n [        X R                  5      u  p4 [        U5      u  pV    nXS:X  a  Xd:X  a  [        SUSU S	U S
35        Mn  [        SUSU SU SU SU S3	5        M     g ! [         a    [        SUS[        R                  S9   M  f = f! [         a    [        SUS[        R                  S9   M  f = f)NzSubproject statuszsubprojects/*.wrap znot available in wrapdb.r}   zWrap file not from wrapdb.zup to date. Branch z, revision .znot up to date. Have rl   z, but z is available.)r5   r   rO   rP   rt   rH   r3   	Exceptionr   r   ri   )r6   wr   latest_branchlatest_revisioncurrent_branchcurrent_revisionrL   s           r/   r    r       s   	
&'ww"3B'	/A$H^H^/_,]	:Ma:P7^q!Q */?/R"d1.1AM]L^^_`a"d3N3C1EUDVV\]j\kklm|l}  ~L  M  N (  	"d6SZZH	
  	"d8szzJ	s#   B$C$$CC$C76C7c                    [        U R                  5      n[        S5      R                  SS9  [        S5      R	                  S5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)NrJ   T)exist_okzsubprojects/wrapdb.jsonrN   )r
   r3   r   mkdirrU   rV   )r6   datarY   s      r/   r+   r+      sU    W334Dt,	'	(	-	-d	3q	 
4	3	3s   A##
A1c                &    U R                  U 5        g)Nr   r   )r6   s    r/   r*   r*      s    gr1   )r,   z'argparse.ArgumentParser'returnNone)r6   'argparse.Namespace'r   r   )r   strr3   boolr   zT.Tuple[str, str])rW   r   r   z,T.Tuple[str, str, str, str, T.Optional[str]])rw   r   rx   r   r   r   )r6   r   r   int)#
__future__r   r   rO   ra   rr   typingTr   wrapr   r   r   r	   r
   r   pathlibr   r   r   r   TYPE_CHECKINGargparser0   r(   r   rH   r   ri   r   r{   r!   r    r+   r*    r1   r/   <module>r      su    #     7 7  %??*(X
	AEb(	\).N&r1   