§
    ƒnócÇ'  ã                  ó   — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ ddl	m
Z
mZmZmZmZmZ d dlmZ ddlmZmZ ej        rd dlZd&d„Zd'd„Zd'd„Zd(d„Zd'd„Zd)d„Zd'd„Zd'd„Zd*d „Zd'd!„Z d'd"„Z!d'd#„Z"d+d%„Z#dS ),é    )ÚannotationsN)Úglobé   )Úopen_wrapdburlÚWrapExceptionÚget_releasesÚget_releases_dataÚupdate_wrap_fileÚparse_patch_url)ÚPathé   )ÚmesonlibÚmsubprojectsÚparserú'argparse.ArgumentParser'ÚreturnÚNonec                ó:  — |                       dd¬¦  «        }d|_        |                     dd¬¦  «        }|                     dd	d
d¬¦  «         |                     t
          ¬¦  «         |                     dd¬¦  «        }|                     dd	d
d¬¦  «         |                     d¦  «         |                     t          ¬¦  «         |                     dd¬¦  «        }|                     dd	d
d¬¦  «         |                     d¦  «         |                     t          ¬¦  «         t          j	        |¦  «        }|                     t          j
        ¬¦  «         |                     dd¬¦  «        }|                     dd	d
d¬¦  «         |                     d¦  «         |                     t          ¬¦  «         |                     dd¬¦  «        }|                     dd	d
d¬¦  «         |                     t          ¬¦  «         |                     dd¬¦  «        }|                     d¦  «         |                     t          ¬¦  «         |                     dd¬¦  «        }|                     dd	d
d¬¦  «         |                     t          ¬¦  «         d S )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)r   Ú
subparsersÚps      ú:/usr/lib/python3/dist-packages/mesonbuild/wrap/wraptool.pyÚadd_argumentsr3      s°  € Ø×&Ò&¨Z¸iÐ&ÑHÔH€JØ€JÔà×Ò˜fÐ+HÐÑIÔI€AØ‡N‚NÐ%¨u¸\Ø<ð ñ >ô >ð >à‡N‚N�]€NÑ+Ô+Ð+à×Ò˜hÐ-DÐÑEÔE€AØ‡N‚NÐ%¨u¸\Ø<ð ñ >ô >ð >à‡N‚N�6ÑÔÐØ‡N‚N�V€NÑ$Ô$Ð$à×Ò˜iÐ.MÐÑNÔN€AØ‡N‚NÐ%¨u¸\Ø<ð ñ >ô >ð >à‡N‚N�6ÑÔÐØ‡N‚N�W€NÑ%Ô%Ð%åÔ+¨JÑ7Ô7€AØ‡N‚N�\Ô-€NÑ.Ô.Ð.à×Ò˜fÐ+QÐÑRÔR€AØ‡N‚NÐ%¨u¸\Ø<ð ñ >ô >ð >à‡N‚N�6ÑÔÐØ‡N‚N�T€NÑ"Ô"Ð"à×Ò˜hÐ-eÐÑfÔf€AØ‡N‚NÐ%¨u¸\Ø<ð ñ >ô >ð >à‡N‚N�V€NÑ$Ô$Ð$à×Ò˜iÐ.^ÐÑ_Ô_€AØ‡N‚N�>Ñ"Ô"Ð"Ø‡N‚N�W€NÑ%Ô%Ð%à×Ò˜kÐ0lÐÑmÔm€AØ‡N‚NÐ%¨u¸\Ø<ð ñ >ô >ð >à‡N‚N�Y€NÑ'Ô'Ð'Ð'Ð'ó    Úoptionsú'argparse.Namespace'c                óz   — t          | j        ¦  «        }|                     ¦   «         D ]}t          |¦  «         Œd S )N)r   Úallow_insecureÚkeysÚprint)r5   Úreleasesr1   s      r2   r,   r,   K   s@   € Ý˜GÔ2Ñ3Ô3€HØ�]Š]‰_Œ_ð ð ˆÝˆa‰Œˆˆðð r4   c                óP  — | j         }t          | j        ¦  «        }|                     ¦   «         D ]u\  }}|                     |¦  «        dk    rt          |¦  «         Œ.|                     dg ¦  «        D ]0}|                     |¦  «        dk    rt          d|› d|› �¦  «         Œ1Œvd S )NéÿÿÿÿÚdependency_nameszDependency z found in wrap )r!   r   r8   ÚitemsÚfindr:   Úget)r5   r!   r;   r1   r#   Údeps         r2   r    r    P   sÁ   € ØŒ<€DÝ˜GÔ2Ñ3Ô3€HØ—>’>Ñ#Ô#ð Að A‰ˆˆ4Ø�6Š6�$‰<Œ<˜2ÒÐÝ�!‰HŒHˆHˆHà—x’xÐ 2°BÑ7Ô7ð Að A�Ø—8’8˜D‘>”> RÒ'Ð'ÝÐ?¨Ð?Ð?¸AÐ?Ð?Ñ@Ô@Ð@øðAð	Að Ar4   r!   Ústrr8   ÚboolúT.Tuple[str, str]c                óÊ   — t          |¦  «        }|                     | ¦  «        }|st          d| › d�¦  «        ‚|d         d         }|                     dd¦  «        \  }}||fS )NúWrap ú not found in wrapdbÚversionsr   ú-r   )r   rA   r   Úrsplit)r!   r8   r;   r#   Úlatest_versionÚversionÚrevisions          r2   Úget_latest_versionrO   [   sw   € Ý˜NÑ+Ô+€HØ�<Š<˜ÑÔ€DØð @ÝÐ> DÐ>Ð>Ð>Ñ?Ô?Ð?Ø˜*Ô% aÔ(€NØ&×-Ò-¨c°1Ñ5Ô5Ñ€GˆXØ�HÐÐr4   c                óî  — | j         }t          j                             d¦  «        st	          d¦  «        ‚t          j                             t          j                             d|¦  «        ¦  «        rt	          d¦  «        ‚t          j                             d|dz   ¦  «        }t          j                             |¦  «        rt	          d¦  «        ‚t          || j        ¦  «        \  }}t          d|› d|› d|› d	|› d�	| j        d
¦  «        }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          d|› d|› d|› �¦  «         d S )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/Ú_rJ   ú/TÚwbz
Installed ú	 version ú
 revision )r!   ÚosÚpathÚisdirÚ
SystemExitÚjoinÚexistsrO   r8   r   ÚopenÚwriteÚreadr:   )r5   r!   ÚwrapfilerM   rN   ÚurlÚfs          r2   r"   r"   d   s¨  € ØŒ<€DÝŒ7�=Š=˜Ñ'Ô'ð fÝÐdÑeÔeÐeÝ	„w‡}‚}•R”W—\’\ -°Ñ6Ô6Ñ7Ô7ð RÝÐPÑQÔQÐQÝŒw�|Š|˜M¨4°'©>Ñ:Ô:€HÝ	„w‡~‚~�hÑÔð 6ÝÐ4Ñ5Ô5Ð5Ý,¨T°7Ô3IÑJÔJÑ€WˆhÝ
Ðd¸TÐdÐdÀGÐdÐdÈhÐdÐdÐY]ÐdÐdÐdÐfmÔf|ð  Cñ  Dô  D€CÝ	ˆh˜Ñ	Ô	ð  Ø	�Š�—’‘
”
ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Ð
C�tÐ
CÐ
C gÐ
CÐ
C¸Ð
CÐ
CÑDÔDÐDÐDÐDs   Ä(EÅEÅEra   ú,T.Tuple[str, str, str, str, T.Optional[str]]c                óp  — t          j        d ¬¦  «        }|                     | ¦  «         	 |d         }n# t          $ r t	          d¦  «        ‚w xY w	 |d         }t          |¦  «        \  }}|d         }n/# t          $ r" t          j        |d         ¦  «        }d\  }}Y nw xY w|||d         |d         |fS )	N)Úinterpolationz	wrap-filez1Not a wrap-file, cannot have come from the wrapdbÚ	patch_urlÚpatch_filenameÚsource_filename)Ú1NÚ	directory)ÚconfigparserÚConfigParserr`   ÚKeyErrorr   r   r   Úsearch_version)ra   ÚcpÚ	wrap_datarg   ÚbranchrN   rh   s          r2   Úget_current_versionrs   s   sø   € Ý	Ô	"°Ð	6Ñ	6Ô	6€BØ‡G‚GˆHÑÔÐðQØ�{”Oˆ	ˆ	øÝð Qð Qð QÝÐOÑPÔPÐPðQøøøð
5Ø˜kÔ*ˆ	õ +¨9Ñ5Ô5Ñˆ�Ø"Ð#3Ô4ˆˆøõ ð -ð -ð -õ Ô(¨Ð3DÔ)EÑFÔFˆØ#,Ñ ˆ�.�.�.ð-øøøð �8˜Y {Ô3°YÐ?PÔ5QÐSaÐaÐas   ¬5 µAÁA6 Á6)B"Â!B"c                ó¤  — | j         }t          j                             d¦  «        st	          d¦  «        ‚t          j                             d|dz   ¦  «        }t          j                             |¦  «        st	          d|z   dz   ¦  «        ‚t          |¦  «        \  }}}}}t          || j	        ¦  «        \  }}	||k    r"|	|k    rt          d|z   dz   ¦  «         t          ‚t          ||||	| j	        ¦  «         t          j        t          j                             d|¦  «        d¬¦  «         	 t          j        t          j                             d	|¦  «        ¦  «         n# t          $ r Y nw xY w|�D	 t          j        t          j                             d	|¦  «        ¦  «         n# t          $ r Y nw xY wt          d
|› d|› d|	› �¦  «         d S )NrQ   zJSubprojects dir not found. Run this command in your source root directory.rR   zProject z is not in use.z is already up to date.T)Úignore_errorszsubprojects/packagecachezUpdated rV   rW   )r!   rX   rY   rZ   r[   r\   r]   rs   rO   r8   r:   r
   ÚshutilÚrmtreeÚunlinkÚFileNotFoundError)
r5   r!   ra   rr   rN   ÚsubdirÚsrc_fileÚ
patch_fileÚ
new_branchÚnew_revisions
             r2   Úupdater   ‡   sÞ  € ØŒ<€DÝŒ7�=Š=˜Ñ'Ô'ð gÝÐeÑfÔfÐfÝŒw�|Š|˜M¨4°'©>Ñ:Ô:€HÝŒ7�>Š>˜(Ñ#Ô#ð @Ý˜ dÑ*Ð->Ñ>Ñ?Ô?Ð?Ý7JÈ8Ñ7TÔ7TÑ4€VˆX�v˜x¨Ý!3°D¸'Ô:PÑ!QÔ!QÑ€Z�Ø�VÒÐ °Ò 8Ð 8Ýˆj˜4ÑÐ";Ñ;Ñ<Ô<Ð<ÝÐÝ�X˜t Z°¸wÔ?UÑVÔVÐVÝ
„M•"”'—,’,˜}¨fÑ5Ô5ÀTÐJÑJÔJÐJðÝ
Œ	•"”'—,’,Ð9¸8ÑDÔDÑEÔEÐEÐEøÝð ð ð ØˆðøøøàÐð	ÝŒI•b”g—l’lÐ#=¸zÑJÔJÑKÔKÐKÐKøÝ ð 	ð 	ð 	ØˆDð	øøøå	Ð
H�TÐ
HÐ
H JÐ
HÐ
H¸,Ð
HÐ
HÑIÔIÐIÐIÐIs$   Ä/2E" Å"
E/Å.E/Å52F( Æ(
F5Æ4F5c                óì   — | j         }t          | j        ¦  «        }|                     |¦  «        }|st	          d|› d�¦  «        ‚t          d|› d�¦  «         |d         D ]}t          d|¦  «         Œd S )NrG   rH   zAvailable versions of ú:rI   ú )r!   r   r8   rA   r   r:   )r5   r!   r;   r#   Úvs        r2   r#   r#       s”   € ØŒ<€DÝ˜GÔ2Ñ3Ô3€HØ�<Š<˜ÑÔ€DØð @ÝÐ> DÐ>Ð>Ð>Ñ?Ô?Ð?Ý	Ð
* 4Ð
*Ð
*Ð
*Ñ+Ô+Ð+Ø�*Ôð ð ˆÝˆc�1‰Œˆˆðð r4   Ú	from_pathÚ
spdir_namec                ó  — t           j                             | ¦  «        r.|                      d¦  «        sJ ‚t	          j        | |¦  «         d S t           j                             | ¦  «        rœt           j                             | ¦  «        }t           j                             ||¦  «        }t           j         	                    |¦  «        rt          d|› d�¦  «        ‚t	          j        | |t	          j        d¦  «        ¬¦  «         d S d S )NrR   zOutput dir z$ already exists. Will not overwrite.rQ   )Úignore)rX   rY   ÚisfileÚendswithrv   ÚcopyrZ   Úbasenamer\   r]   r[   ÚcopytreeÚignore_patterns)r„   r…   Ú
sproj_nameÚ	outputdirs       r2   Údo_promotionr�   ª   sñ   € Ý	„w‡~‚~�iÑ Ô ð \Ø×!Ò! 'Ñ*Ô*Ð*Ð*Ð*ÝŒ�I˜zÑ*Ô*Ð*Ð*Ð*Ý	Œ�Š�yÑ	!Ô	!ð \Ý”W×%Ò% iÑ0Ô0ˆ
Ý”G—L’L ¨ZÑ8Ô8ˆ	ÝŒ7�>Š>˜)Ñ$Ô$ð 	\ÝÐZ¨9ÐZÐZÐZÑ[Ô[Ð[ÝŒ˜	 9µVÔ5KÈMÑ5ZÔ5ZÐ[Ñ[Ô[Ð[Ð[Ð[ð\ð \r4   c                ó  — | j         }d}t          j        |¦  «        }|                     dt          j        ¦  «        }|                     ¦   «         D ]}||v rt          ||¦  «          d S Œ||vrt          d|› d�¦  «        ‚||         }t          |¦  «        dk    rNt          d|› d�t          j        ¬¦  «         |D ]}t          |t          j        ¬¦  «         Œt          d¦  «        ‚t          |d	         |¦  «         d S )
NrQ   rT   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ÚreplacerX   ÚsepÚvaluesr�   r[   Úlenr:   ÚsysÚstderr)r5   Úargumentr…   ÚsprojsÚsystem_native_path_argumentÚmatchesÚss          r2   r%   r%   µ   s*  € ØÔ#€HØ€JÝÔ(¨Ñ4Ô4€Fð #+×"2Ò"2°3½¼Ñ"?Ô"?ÐØ—=’=‘?”?ð ð ˆØ&¨'Ð1Ð1ÝÐ4°jÑAÔAÐAØˆFˆFð 2ð
 �vÐÐÝÐN xÐNÐNÐNÑOÔOÐOØ�XÔ€GÝ
ˆ7�|„|�aÒÐÝÐm°8ÐmÐmÐmÕtwÔt~ÐÑÔÐØð 	&ð 	&ˆAÝ�!�#œ*Ð%Ñ%Ô%Ð%Ð%Ý˜‰mŒmÐÝ�˜”˜ZÑ(Ô(Ð(Ð(Ð(r4   c                ó2  — t          d¦  «         t          d¦  «        D ]÷}t          j                             |¦  «        d d…         }	 t          || j        ¦  «        \  }}n-# t          $ r  t          d|dt          j	        ¬¦  «         Y Œlw xY w	 t          |¦  «        \  }}}}}n-# t          $ r  t          d|dt          j	        ¬¦  «         Y Œ°w xY w||k    r||k    rt          d|d|› d	|› d
�¦  «         ŒÙt          d|d|› d|› d|› d|› d�	¦  «         Œød S )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 r‚   z, but z is available.)r:   r   rX   rY   r‹   rO   r8   Ú	Exceptionr™   rš   rs   )r5   Úwr!   Úlatest_branchÚlatest_revisionÚcurrent_branchÚcurrent_revisionrS   s           r2   r$   r$   Ì   s¯  € Ý	Ð
ÑÔÐÝÐ&Ñ'Ô'ð Nð NˆÝŒw×Ò Ñ"Ô" 3 B 3Ô'ˆð	Ý/AÀ$ÈÔH^Ñ/_Ô/_Ñ,ˆ]˜O˜OøÝð 	ð 	ð 	Ý�"�dÐ6½S¼ZÐHÑHÔHÐHØˆHð	øøøð	Ý:MÈaÑ:PÔ:PÑ7ˆ^Ð-¨q°!°Q°QøÝð 	ð 	ð 	Ý�"�dÐ8½s¼zÐJÑJÔJÐJØˆHð	øøøð ˜]Ò*Ð*Ð/?À?Ò/RÐ/RÝ�"�dÐ`°.Ð`Ð`ÐM]Ð`Ð`Ð`ÑaÔaÐaÐaå�"�dð  M°Nð  Mð  MÐEUð  Mð  MÐ]jð  Mð  MÐm|ð  Mð  Mð  Mñ  Nô  Nð  Nð  NðNð Ns$   Á	A"Á"'BÂBÂB&Â&'CÃCc                ó  — t          | j        ¦  «        }t          d¦  «                             d¬¦  «         t          d¦  «                             d¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrQ   T)Úexist_okzsubprojects/wrapdb.jsonrU   )r	   r8   r   Úmkdirr^   r_   )r5   Údatarc   s      r2   r/   r/   ß   s¾   € Ý˜WÔ3Ñ4Ô4€DÝˆÑÔ×Ò tÐÑ,Ô,Ð,Ý	Ð'Ñ	(Ô	(×	-Ò	-¨dÑ	3Ô	3ð °qØ	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA=Á=BÂBÚintc                ó0   — |                       | ¦  «         dS )Nr   r   )r5   s    r2   r.   r.   å   s   € Ø×Ò�gÑÔÐØˆ1r4   )r   r   r   r   )r5   r6   r   r   )r!   rC   r8   rD   r   rE   )ra   rC   r   rd   )r„   rC   r…   rC   r   r   )r5   r6   r   r®   )$Ú
__future__r   r™   rX   rl   rv   ÚtypingÚTr   Úwrapr   r   r   r	   r
   r   Úpathlibr   r¢   r   r   ÚTYPE_CHECKINGÚargparser3   r,   r    rO   r"   rs   r   r#   r�   r%   r$   r/   r.   © r4   r2   ú<module>r¸      s  ðð #Ð "Ð "Ð "Ð "Ð "à €€€€€€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6à Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à„?ð Ø€O€O€Oð*(ð *(ð *(ð *(ðXð ð ð ð
	Að 	Að 	Að 	Aðð ð ð ðEð Eð Eð Eðbð bð bð bð(Jð Jð Jð Jð2ð ð ð ð	\ð 	\ð 	\ð 	\ð)ð )ð )ð )ð.Nð Nð Nð Nð&ð ð ð ðð ð ð ð ð r4   