Ë jùÃ8Fðãód—ddlZddlZddlZddlZddlmZddlZddlmZddl m Z Gd„d«Z y)éN)ÚNoReturné)ÚMessage)Úuserdirc óŽ—eZdZdZdZdedefd„Zdedefd„Z defd „Z dd „Z dd „Z dd „Z dd„Zdededd fd„Zddedededd fd„Zy )ÚPluginz/ --filter and --theme option commands. )ÚinstallÚremoveÚlistÚbuildÚtypeÚmessagecó.—||_||_||_y)N)r rÚconfig)Úselfr rrs ú4/usr/lib/python3.12/site-packages/asciidoc/plugin.pyÚ__init__zPlugin.__init__s€ØˆŒ ؈Œ ؈� óÚmsgÚreturncód—|jj|«tjd«y)Nr)rÚstderrÚsysÚexit)rrs rÚdiez Plugin.dies€Ø � ‰ ×јCÔ Ü �‰�� rcóz—t«}|r.tjj|d|jdz«}|S)z� Return plugins path (.asciidoc/filters or .asciidoc/themes) in user's home directory or None if user home not defined. z .asciidocÚs)rÚosÚpathÚjoinr )rÚresults rÚget_dirzPlugin.get_dirs1€ô “ˆÙ Ü—W‘W—\‘\ &¨+°t·y±yÀ3±ÓGˆF؈ rNc ó<—t|«dvr:|jdj|jdj |«««|d}t j j|«s|jd|z«tjdt j j|«d«}|s+|jdj|j|««|j«}t|«d k(r9|d}t j j|«s<|jd |z«n'tj«}|s|jd «t j j ||«}t j j|«r |j|j›d |›�« t j |« |j'||«y#t"$r4}|jd |j›dt%|«›�«Yd}~ŒLd}~wwxYw#t"$rh}t j j|«rt)j*|«|jd|j›dt%|«›�«Yd}~yd}~wwxYw)zŽ Install plugin Zip file. args[0] is plugin zip file path. args[1] is optional destination plugins directory. ©réz,invalid number of arguments: --{} install {}Ú rzfile not found: %sz^\w+rz/file name does not start with legal {} name: {}r%údirectory not found: %sz"user home directory is not definedz is already installed: úfailed to create z directory: Nzfailed to extract ú: )ÚlenrÚformatr r rrÚisfileÚreÚmatchÚsplitÚgroupÚisdirrr"ÚexistsÚmakedirsÚ ExceptionÚstrÚ extract_zipÚshutilÚrmtree)rÚargsÚzip_fileÚreoÚ plugin_nameÚ plugins_dirÚ plugin_dirÚes rr zPlugin.install%sí€ô ˆt‹9˜FÑ "Ø �H‰HØ>×EÑEØ—I‘IØ—H‘H˜T“Nóô 𠘑7ˆÜ�w‰w�~‰~˜hÔ'Ø �H‰HÐ)¨HÑ4Ô 5Ü�h‰h�w¤§¡§ ¡ ¨hÓ 7¸Ñ :Ó;ˆÙØ �H‰HÐF×MÑMØ— ‘ Øóô ð—i‘i“kˆ Ü ˆt‹9˜Š>ؘq™'ˆKÜ—7‘7—=‘= Ô-Ø—‘Ð2°[Ñ@ÕAä Ÿ.™.Ó*ˆKÙØ—‘Ð=Ô>Ü—W‘W—\‘\ +¨{Ó;ˆ Ü �7‰7�>‰>˜*Ô %Ø �H‰H°d·i³iÁÐLÔ Mð PÜ �K‰K˜ Ô #ð GØ × Ñ ˜X zÕ 2øôò PØ �HŠH¸D¿I»IÄsÈ1ÄvÐN× OÑ Oûð Pûôò GÜ�w‰w�}‰}˜ZÔ(Ü— ‘ ˜jÔ)Ø �HŠH°4·9³9¼cÀ!¼fÐE× FÑ Fûð Gús1ÇG*ÇH*Ç* H'Ç3*H"È"H'È* JÈ3AJÊJc óŽ—t|«dvr:|jdj|jdj |«««|d}t j d|«s!|jd|j›d|›�«t|«dk(r9|d }tjj|«s<|jd |z«n'tj«}|s|jd «tjj ||«}tjj|«s!|jd |j›d |›�« |jjd|z«tj|«y#t $r4}|jd|j›d t#|«›�«Yd}~yd}~wwxYw)z  Delete plugin directory. args[0] is plugin name. args[1] is optional plugin directory (defaults to ~/.asciidoc/). r$z+invalid number of arguments: --{} remove {}r&rz^\w+$zillegal z name: r%rr'zuser directory is not definedz cannot find r)z removing: %szfailed to delete N)r*rr+r r r-r.rrr1rr"rÚverboser7r8r4r5)rr9r<Údr>r?s rr z Plugin.removeRsL€ô ˆt‹9˜FÑ "Ø �H‰HÐB×IÑIØ— ‘ Ø—‘˜“óô ð˜1‘gˆ Ü�x‰x˜ +Ô.Ø �HŠH¨d¯i«i¹ÐEÔ FÜ ˆt‹9˜Š>Ø�Q‘ˆAÜ—7‘7—=‘= Ô#Ø—‘Ð2°QÑ6Õ7ä—‘Ó ˆAÙØ—‘Ð8Ô9Ü—W‘W—\‘\ ! [Ó1ˆ Ü�w‰w�}‰}˜ZÔ(Ø �HŠH¨T¯Y«Y¹ ÐCÔ Dð FØ �L‰L× Ñ  °*Ñ!<Ô =Ü �M‰M˜*Õ %øÜò FØ �HŠH°$·)³)¼SÀ¼VÐD× EÑ Eûð FúsÅ3FÆ GÆ*F?Æ?GcóH—|jj«D�cgc]/}tjj ||j dz«‘Œ1}}|D]Á}tjj |«sŒ#tj|«D�cgc]"}tjj ||«‘Œ$}}tttjj |««D]/}|jd«rŒ|jj|«Œ1ŒÃycc}wcc}w)zA List all plugin directories (global and local). rÚ __pycache__N) rÚ get_load_dirsrrr r r1ÚlistdirÚsortedÚfilterÚendswithrÚstdout)rÚ_rBÚdirsÚoÚ plugin_dirsÚfs rr z Plugin.listqsÏ€ð;?¿+¹+×:SÑ:SÔ:UÓVÑ:U°Q”—‘— ‘ ˜Q § ¡ ¨C¡Õ0Ð:UˆÐVÛˆAÜ�w‰w�}‰}˜QÕÜ;=¿:¹:Àa¼=ÓI¹=°aœrŸw™wŸ|™|¨A¨qÕ1¸=� ÐIܤ¤r§w¡w§}¡}°kÓ BÖC�AØ—z‘z -Ô0Ø Ø—L‘L×'Ñ'¨Õ*ñDñùòWùòJs �4DÂ'Dc óâ—t|«dk7r:|jdj|jdj |«««|d}|d}t j j|«s3t j j|«s|jd|z« |j||d¬«y #t$r*}|jd |›d t|«›�«Yd }~y d }~wwxYw) zp Create plugin Zip file. args[0] is Zip file name. args[1] is plugin directory. r%z*invalid number of arguments: --{} build {}r&rrzplugin source not found: %sT)Ú skip_hiddenr(r)N) r*rr+r r rrr1r,Ú create_zipr4r5)rr9r:Ú plugin_sourcer?s rr z Plugin.build~s€ô ˆt‹9˜Š>Ø �H‰HÐA×HÑHØ— ‘ Ø—‘˜“óô ð˜‘7ˆØ˜Q™ˆ Ü—‘— ‘ ˜mÔ,´·±·±¸}Ô0MØ �H‰HÐ2°]ÑBÔ Cð EØ �O‰O˜H mÀˆOÕ FøÜò EØ �HŠH²(¼CÀ¼FÐC× DÑ Dûð EúsÂ&B;Â; C.à C)Ã)C.r:Údestdircó`—tj|d«} |j«D�]Ã}|j}|j d«rŒ"t j j|«\}}t j jt j j||««}t j j|«st j|«t j j||«}|jdz dz}|jjd|z«t jt j z} t"j$dk(r| t j&z} |dk(rt j(|| «} nt j(|| |«} t j*| |j-|j««t j.| «�ŒÆ |j/«y#t j.| «wxYw#|j/«wxYw) zd Unzip Zip file to destination directory. Throws exception if error occurs. ÚrÚ/éiÿzextracting: %sÚwin32rN)ÚzipfileÚZipFileÚinfolistÚfilenamerIrrr/Únormpathr r1r3Ú external_attrrrAÚO_CREATÚO_WRONLYrÚplatformÚO_BINARYÚopenÚwriteÚreadÚclose) rr:rTÚzipoÚziÚoutfilerBÚ directoryÚpermsÚflagsÚfhs rr6zPlugin.extract_zip’sz€ô �‰˜x¨Ó-ˆð Ø—m‘m—o�ØŸ+™+�Ø×'Ñ'¨Õ,Ü!#§¡§¡¨wÓ!7‘J�A�wÜ "§¡× 0Ñ 0´·±·±¸gÀqÓ1IÓ J�IÜŸ7™7Ÿ=™=¨Ô3ÜŸ ™  IÔ.Ü Ÿg™gŸl™l¨9°gÓ>�GØ×-Ñ-°Ñ3°uÑ<�EØ—L‘L×(Ñ(Ð)9¸GÑ)CÔDÜŸJ™J¬¯©Ñ4�EÜ—|‘| wÒ.ؤ§¡Ñ,˜Ø ’zäŸW™W W¨eÓ4™äŸW™W W¨e°UÓ;˜ð%ÜŸ™  T§Y¡Y¨r¯{©{Ó%;Ô<䟙 ž ñ+&ð. �J‰J�LøôŸ™ � ûà �J‰J�Lús*˜1HÁ EHÆ(/HÇHÈHÈHÈH-ÚsrcrQc ón—tj|d«} tjj |«r`tjj |«}|j jd|z«|j||tj«�nútjj|«�rÌtjj|«}|dtjjk7r|tjjz }tj|«D�]V\}}} tjj|«t|«d} |rj|ddD]b} | jd«sŒ|j jdtjj!| | «z«||j#| «=Œd| D]³} tjj!|| «} tjj!| | «}|r0| jd«r|j jd|z«Œu|j jd|z«|j| |tj«Œµ�ŒYnt%d|z«‚|j'«y#|j'«wxYw)a! Create Zip file. If src is a directory archive all contained files and subdirectories, if src is a file archive the src file. Files and directories names starting with . are skipped if skip_hidden is True. Throws exception if error occurs. Úwz archiving: %séÿÿÿÿNÚ.z skipping: %sz&src must specify directory or file: %s)rZr[rrr,ÚbasenamerrAreÚ ZIP_DEFLATEDr1ÚabspathÚsepÚwalkr*Ú startswithr ÚindexÚ ValueErrorrg)rr:rorQrhÚarcnameÚsrcdirÚrootrLÚfilesÚarcrootrBrOr]s rrRzPlugin.create_zip²sï€ô�‰˜x¨Ó-ˆð Ü�w‰w�~‰~˜cÔ"ÜŸ'™'×*Ñ*¨3Ó/�Ø— ‘ ×$Ñ$ _°wÑ%>Ô?Ø— ‘ ˜3 ¬×)=Ñ)=Ö>Ü—‘—‘˜sÕ#ÜŸ™Ÿ™¨Ó-�ؘ"‘:¤§¡§¡Ò,ØœbŸg™gŸk™kÑ)�FÜ)+¯©°¯Ñ%�D˜$ Ü Ÿg™gŸo™o¨dÓ3´C¸³K°LÐA�GÙ"Ø!%¡a£˜AØ Ÿ|™|¨CÕ0Ø $§ ¡ × 4Ñ 4Ø$2´R·W±W·\±\À'È1Ó5MÑ$Mô!"ð%)¨¯©°A«Ñ$7ð ")ó #˜Ü#%§7¡7§<¡<°°aÓ#8˜Ü"$§'¡'§,¡,¨w¸Ó":˜Ù&¨1¯<©<¸Ô+<Ø ŸL™L×0Ñ0°À'Ñ1IÔJØ$ØŸ ™ ×,Ñ,¨_¸wÑ-FÔGØŸ ™  8¨W´g×6JÑ6JÕKò#ñ*9ô$!Ð!IÈCÑ!OÓPÐPà �J‰J�LøˆD�J‰J�Lús˜EJ"Å7DJ"Ê"J4)rN)F)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚCMDSr5rrrrr"r r r r r6ÚboolrR©rrrr s•„ñð 2€Dð˜Sð¨7óð �sð˜xóð˜óó+GóZFó> +óEð( Cð°#ð¸$óñ@& 3ð&¨Sð&¸tð&ÐPTô&rr) rr-r7rÚtypingrrZrrÚutilsrrr‡rrÚrŠs)ðÛ Û Û Û ÝÛåÝ÷LòLr