o
    ºùŠej-  ã                   @  sl  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m	Z	m
Z
mZmZ ddlmZ d dlZe ¡ Zejddd	 ejd
dd	 ejddd	 ejddd	 ejddd	 ejddd	 ejddd	 ejdddd ejdddd ejdddd ejdddd ejd d!dd ejd"d#dd ejd$d%dd ejd&d'dd ejd(d)dd ejd*d+dd ejd,d-dd ejd.d/dd ejd0d1dd ejd2d3dd ejd4d5dd ejd6d7dd ejd8d9d	 ejd:d;dd d<D ]Zd=e Zejd>e e d?d@¡d	 qødcdddIdJ„ZdedYdZ„Zdfd]d^„Zdgdad;„Zedbkr4e eejdd… ƒ¡ dS dS )hé    )ÚannotationsNé   )ÚMesonExceptionÚ
Popen_safeÚ
is_windowsÚ	is_cygwinÚ
split_argsé   )Údestdir_joinz--sourcedirÚ	sourcedir)Údestz
--builddirÚbuilddirz--subdirÚsubdirz--headerdirsÚ
headerdirsz
--mainfileÚmainfilez--modulenameÚ
modulenamez--moduleversionÚmoduleversionz
--htmlargsÚhtmlargsÚ )r   Údefaultz
--scanargsÚscanargsz--scanobjsargsÚscanobjsargsz--gobjects-types-fileÚgobject_typesfilez--fixxrefargsÚfixxrefargsz
--mkdbargsÚmkdbargsz--ldÚldz--ccÚccz	--ldflagsÚldflagsz--cflagsÚcflagsz--content-filesÚcontent_filesz--expand-content-filesÚexpand_content_filesz--html-assetsÚhtml_assetsz--ignore-headersÚignore_headersz--namespaceÚ	namespacez--modeÚmodez--installdirÚinstall_dirz--runÚrun)ÚscanZscangobjZmkdbZmkhtmlZfixxrefzgtkdoc-z--ú-Ú_ÚcmdúT.List[str]ÚcwdÚstrÚlibrary_pathsúT.Optional[T.List[str]]ÚreturnÚNonec                 C  s  |d u rg }t tjƒ}tƒ stƒ r)d|v r | |d  tj¡¡ tj |¡|d< nd|v r8| |d  tj¡¡ tj |¡|d< tƒ rJ|  	dt
j¡ t| ||tjddd… \}}|jdkrv| ›d|jd›g}|ro| |¡ td |¡ƒ‚|rŠzt|ƒ W d S  ty‰   Y d S w d S )	NÚPATHZLD_LIBRARY_PATHr   )r,   ÚenvÚstderrr   z failed with status ÚdÚ
)ÚdictÚosÚenvironr   r   ÚextendÚsplitÚpathsepÚjoinÚinsertÚsysÚ
executabler   Ú
subprocessÚSTDOUTÚ
returncodeÚappendr   ÚprintÚUnicodeEncodeError)r*   r,   r.   r3   ÚpÚoutÚerr_msg© rJ   úD/usr/lib/python3.10/site-packages/mesonbuild/scripts/gtkdochelper.pyÚgtkdoc_run_check7   s2   


ÿùrL   Úsource_rootÚ
build_rootÚ
doc_subdirÚsrc_subdirsÚ	main_fileÚmoduleÚmodule_versionÚ	html_argsÚ	scan_argsÚfixxref_argsÚ	mkdb_argsÚscanobjs_argsÚoptionsúargparse.Namespacec           +   
   C  sÚ  t d| ƒ g }|D ]#}tj |¡s!tj | |¡tj ||¡g}n|g}|dd„ |D ƒ7 }q
tj | |¡}tj ||¡}tj |d¡}||g7 }tj ||d ¡}tj |¡r\| |¡ tj ||d ¡} tj | ¡rp| | ¡ |D ]*}!tj |!¡s‚tj ||!¡}!ntj |!|g¡|krqrt 	|!tj |tj 
|!¡¡¡ qrtj|dd zt |¡ W n	 ty´   Y nw |D ]}!tj ||!¡}"t 	|"tj |tj 
|"¡¡¡ q·|jd	| g| }#|rå|# d
d |¡ ¡ |#|7 }#t|#|ƒ d|v rûtj ||d ¡}|r?|jg| }$|$d| d	| d| d| d| d| d| d| g7 }$g }%t|ƒD ]}&|& d¡r7|% |&dd … ¡ q&t|$||%ƒ |dkrP| d¡rMd}'nd}'n|dkrXd}'n
|dkr`d}'nd }'|jd	| ddd |¡ g| }(|r||( d| ¡ |'r„|( |'¡ |rŽ|( d| ¡ |(|
7 }(t|(|ƒ |jd tj ||f¡ |g| })|r²|) d!| ¡ n|) d"| ¡ t|)|ƒ |jd	| d#g|	 }*t|*|ƒ |rët tj ||› d$¡tj ||› d%|› d$¡¡ d S d S )&NzBuilding documentation for %sc                 S  s   g | ]}d | ‘qS )z--source-dir=rJ   )Ú.0r5   rJ   rJ   rK   Ú
<listcomp>i   s    z build_gtkdoc.<locals>.<listcomp>Úhtmlz-sections.txtz-overrides.txtT©Úignore_errorsz	--module=z--ignore-headers=ú z--rebuild-typesz.typesz--types=z--run=z	--cflags=z
--ldflags=z--cc=z--ld=z--output-dir=z-Wl,-rpath,é   ÚautoZsgmlz--sgml-modez
--xml-modeÚxmlz--output-format=xmlz--expand-content-files=z--name-space=z--main-sgml-file=z--path=z../z%s-docs.xmlz--module-dir=htmlz	.devhelp2r(   )rE   r8   ÚpathÚisabsr=   ÚexistsrD   Ú
commonpathÚshutilÚcopyfileÚbasenameÚrmtreeÚmkdirÚ	ExceptionZgtkdoc_scanrL   Zgtkdoc_scangobjr   Ú
startswithÚendswithZgtkdoc_mkdbZgtkdoc_mkhtmlr<   Zgtkdoc_fixxrefÚmove)+rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   r   rX   r&   r   r   r   r   r!   r   r"   r#   r    r$   rY   Zsrc_dir_argsÚsrc_dirÚdirsZdoc_srcZabs_outZhtmldirÚsectionsZ	overridesÚfZf_absZscan_cmdZscanobjs_cmdr.   ZldflagZmodeflagZmkdb_cmdZ
mkhtml_cmdZ
fixref_cmdrJ   rJ   rK   Úbuild_gtkdocZ   sÐ   ÿ


 ÿ 
ù	€


ýü

þý
þþ
ÿÿru   Úinstall_prefixÚdatadirc                 C  s>   t j | |d¡}t j |||¡}tj|dd t ||¡ d S )Nr]   Tr^   )r8   rd   r=   rh   rk   Úcopytree)rN   rO   rv   rw   rR   ÚsourceZfinal_destinationrJ   rJ   rK   Úinstall_gtkdocÞ   s   rz   ÚargsÚintc           
      C  s¤  t  | ¡}|jr|j d¡}ng }|jr|j d¡}ng }|jr'|j d¡}ng }|jr3|j d¡}ng }|jr?|j d¡}ng }t|j	|j
|j|j d¡|j|j|j|||||j||j|j|j|j|j|jrm|j d¡ng |jrw|j d¡ng |jr|j d¡ng |j|jr|j d¡ng |j|ƒ dtjv rÐtj dd¡}t|tjd ƒ}|j r®|j }	n|j}	|jr»|	d|j 7 }	tj! "|	¡rÆt||	ƒ}	t#|j
|j|d|	ƒ dS )Nz@@ZMESON_INSTALL_PREFIXZDESTDIRr   r(   zshare/gtk-doc/htmlr   )$ÚparserÚ
parse_argsr   r;   r   r   r   r   ru   r   r   r   r   r   r   r   r   r&   r   r   r   r   r!   r   r"   r#   r    r$   r8   r9   Úgetr
   r%   rd   re   rz   )
r{   rY   r   r   r   r   r   Zdestdirrv   r%   rJ   rJ   rK   r&   ä   sx   

ç

üÚ__main__)N)r*   r+   r,   r-   r.   r/   r0   r1   )4rM   r-   rN   r-   rO   r-   rP   r+   rQ   r-   rR   r-   rS   r-   rT   r+   rU   r+   rV   r+   rW   r+   r   r-   rX   r+   r&   r-   r   r-   r   r-   r   r-   r   r-   r!   r+   r   r+   r"   r+   r#   r-   r    r+   r$   r-   rY   rZ   r0   r1   )rN   r-   rO   r-   rv   r-   rw   r-   rR   r-   r0   r1   )r{   r+   r0   r|   )Ú
__future__r   r?   r8   rA   rh   ÚargparseZmesonlibr   r   r   r   r   r   r
   ÚtypingÚTÚArgumentParserr}   Úadd_argumentÚtoolZprogram_nameÚreplacerL   ru   rz   r&   Ú__name__ÚexitÚargvrJ   rJ   rJ   rK   Ú<module>   sZ   
# 


Cÿ