
    -Phn!                        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 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S )+    )annotationsN)glob   )open_wrapdburlWrapExceptionget_releasesget_releases_data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      X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/wrap/wraptool.pyadd_argumentsr2      s   &&Zi&HHJJf+HIIANN%u\<  > > >NN]N+++h-DEEANN%u\<  > > >NN6NNVN$$$i.MNNANN%u\<  > > >NN6NNWN%%%+J77ANN\-N...f+QRRANN%u\<  > > >NN6NNTN"""h-effANN%u\<  > > >NNVN$$$i.^__ANN>"""NNWN%%%k0lmmANN%u\<  > > >NNYN'''''    options'argparse.Namespace'c                z    t          | j                  }|                                D ]}t          |           d S )N)r   allow_insecurekeysprint)r4   releasesr0   s      r1   r+   r+   C   s@    G233H]]__  a r3   c                P   | j         }t          | j                  }|                                D ]u\  }}|                    |          dk    rt          |           .|                    dg           D ]0}|                    |          dk    rt          d| d|            1vd S )Ndependency_nameszDependency z found in wrap )r    r   r7   itemsfindr9   get)r4   r    r:   r0   r"   deps         r1   r   r   H   s    <DG233H>>## A A466$<<2!HHHHxx 2B77 A A88D>>R''???A??@@@A	A Ar3   r    strr7   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   r@   r   rsplit)r    r7   r:   r"   latest_versionversionrevisions          r1   get_latest_versionrN   S   sw    N++H<<D @>D>>>???*%a(N&--c155GXHr3   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/_rI   /Twbz
Installed z	 version z
 revision )r    ospathisdir
SystemExitjoinexistsrN   r7   r   openwritereadr9   )r4   r    wrapfilerL   rM   urlfs          r1   r!   r!   \   s   <D7=='' fdeee	w}}RW\\-6677 RPQQQw||M4'>::H	w~~h 64555,T73IJJWh
dTddGddhddY]dddfmf|  C  D  DC	h		 	

              	
Ct
C
Cg
C
C
C
CDDDDDs   (EEEr^   ,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)r^   cp	wrap_datard   branchrM   re   s          r1   get_current_versionrp   k   s    		"	6	6	6BGGHQ{O		 Q Q QOPPPQ
5k*	 +955"#34  - - - (3D)EFF#, ...- 8Y{3Y?P5QSaaas   5 AA6 6)B"!B"c                    | j         }t          | j                  }|                    |          }|st	          d| d          t          d| d           |d         D ]}t          d|           d S )NrF   rG   zAvailable versions of :rH    )r    r   r7   r@   r   r9   )r4   r    r:   r"   vs        r1   r"   r"      s    <DG233H<<D @>D>>>???	
*4
*
*
*+++*  c1 r3   	from_path
spdir_namec                   t           j                            |           r.|                     d          sJ t	          j        | |           d S t           j                            |           rt           j                            |           }t           j                            ||          }t           j        	                    |          rt          d| d          t	          j        | |t	          j        d                     d S d S )NrQ   zOutput dir z$ already exists. Will not overwrite.rP   )ignore)rU   rV   isfileendswithshutilcopyrW   basenamerY   rZ   rX   copytreeignore_patterns)ru   rv   
sproj_name	outputdirs       r1   do_promotionr      s    	w~~i   \!!'*****Iz*****	y	!	! \W%%i00
GLLZ88	7>>)$$ 	\Z9ZZZ[[[	9V5KM5Z5Z[[[[[[\ \r3   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 )
NrP   rS   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replacerU   sepvaluesr   rX   lenr9   sysstderr)r4   argumentrv   sprojssystem_native_path_argumentmatchesss          r1   r$   r$      s*   #HJ(44F #+"2"23"?"?==??  &'114jAAAFF 2
 vNxNNNOOOXG
7||am8mmmtwt~ 	& 	&A!#*%%%%%mmZ(((((r3   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 rs   z, but z is available.)r9   r   rU   rV   r}   rN   r7   	Exceptionr   r   rp   )r4   wr    latest_branchlatest_revisioncurrent_branchcurrent_revisionrR   s           r1   r#   r#      s   	
&'' N Nw""3B3'	/A$H^/_/_,]OO 	 	 	"d6SZHHHHH		:Ma:P:P7^-q!QQ 	 	 	"d8sz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 )NrP   T)exist_okzsubprojects/wrapdb.jsonrT   )r	   r7   r   mkdirr[   r\   )r4   datar`   s      r1   r.   r.      s    W344Dt,,,	'	(	(	-	-d	3	3 q	                 s   A==BBintc                0    |                      |            dS )Nr   r   )r4   s    r1   r-   r-      s    g1r3   )r   r   r   r   )r4   r5   r   r   )r    rB   r7   rC   r   rD   )r^   rB   r   ra   )ru   rB   rv   rB   r   r   )r4   r5   r   r   )"
__future__r   r   rU   ri   r{   typingTr   wrapr   r   r   r	   r
   pathlibr   r   r   r   TYPE_CHECKINGargparser2   r+   r   rN   r!   rp   r"   r   r$   r#   r.   r-    r3   r1   <module>r      s   # " " " " "                $ $ $ $ $ $ $ $ $ $ $ $ $ $       % % % % % % % %? OOO*( *( *( *(X   
	A 	A 	A 	A   E E E Eb b b b(   	\ 	\ 	\ 	\) ) ) ).N N N N&        r3   