Ë
    i©¹d{  ã                   ód   — 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
  G d„ dee	«      Zy)é    N)Úpartial)ÚPluginÚRedHatPluginÚ	PluginOptc                   ó„   — e Zd ZdZdZdZ edded¬«       edd	d
¬«      gZdZ	dZ
d„ Zed„ «       Zed„ «       Zed„ «       Zy)ÚJarsz1Collect information about available Java archivesÚjars)ÚjavaÚappend_locationsÚ z,colon-delimited list of additional JAR paths)ÚdefaultÚval_typeÚdescÚall_known_locationsFzscan all known paths)r   r   )z/usr/share/javaz/usr/lib/java)z/optz
/usr/localz/var/libc                 ó¬  — dg i}g }t        t        j                  «      }| j                  d«      r|t        t        j                  «      z  }| j                  d«      }|r||j                  d«      z  }|D ]`  }t        j                  |«      D ]F  \  }}}|D ];  }	| j                  ||	«      }
t        j                  |
«      sŒ+|j                  |
«       Œ= ŒH Œb |D ]K  }t        j                  |«      }t        j                  |«      }|s|sŒ2|||dœ}|d   j                  |«       ŒM t        j                  |dd¬«      }| j                  |d	d
¬«       y )Nr	   r   r   ú:)ÚpathÚsha1Úmaven_idé   )ú,z: )ÚindentÚ
separatorsz	jars.jsonT)Úplug_dir)Úlistr   Újar_locationsÚ
get_optionÚextra_jar_locationsÚsplitÚosÚwalkÚ	path_joinÚis_jarÚappendÚget_maven_idÚ
get_jar_idÚjsonÚdumpsÚadd_string_as_file)ÚselfÚresultsÚ	jar_pathsÚ	locationsÚuser_locationsÚlocationÚdirpathÚ_Ú	filenamesÚfilenamer   Újar_pathr   Újar_idÚrecordÚresults_strs                   ú9/usr/lib/python3/dist-packages/sos/report/plugins/jars.pyÚsetupz
Jars.setup1   sU  € Ø˜2�,ˆØˆ	äœ×+Ñ+Ó,ˆ	Ø�?‰?Ð0Ô1Øœœd×6Ñ6Ó7Ñ7ˆIð Ÿ™Ð);Ó<ˆÙØ˜×-Ñ-¨cÓ2Ñ2ˆIð "ò 	/ˆHÜ)+¯©°Ó):ò /Ñ%�˜˜IØ )ò /�HØŸ>™>¨'°8Ó<�DÜ—{‘{ 4Õ(Ø!×(Ñ(¨Õ.ñ/ñ/ð	/ð "ò 	/ˆHÜ×(Ñ(¨Ó2ˆHÜ—_‘_ XÓ.ˆFÙš6Ø"*Ø"(Ø&.ñ�ð ˜‘×&Ñ& vÕ.ð	/ô —j‘j °¸{ÔKˆØ×Ñ ¨[À4ÐÕHó    c                 ó<  — t         j                  j                  | «      rRt        j                  | «      r=	 t        j
                  | «      5 }d|j                  «       v r
	 ddd«       y	 ddd«       yy# 1 sw Y   yxY w# t        t        j                  f$ r Y yw xY w)z§Check whether given file is a JAR file.

        JARs are ZIP files which usually include a manifest
        at the canonical location 'META-INF/MANIFEST.MF'.
        zMETA-INF/MANIFEST.MFNTF)	r    r   ÚisfileÚzipfileÚ
is_zipfileÚZipFileÚnamelistÚIOErrorÚ
BadZipfile)r   Úfs     r8   r#   zJars.is_jarT   s�   € ô �7‰7�>‰>˜$Ô¤G×$6Ñ$6°tÔ$<ðÜ—_‘_ TÓ*ð $¨aØ-°·±³Ñ=Ø#÷$ð $Ø=÷$ñ
 ÷$ð
 ûô œW×/Ñ/Ð0ò ØØðús5   ¶A? ÁA3ÁA? Á)A? Á3A<Á8A? Á<A? Á?BÂBc                 óö  — i }	 t        j                  | «      5 }t        j                  d«      }|j	                  «       D �cg c]  }|j                  |«      sŒ|‘Œ }}t        |«      dk7  r
	 ddd«       y|j                  |d   «      5 }|j                  «       D ]|  }|j                  «       }|j                  d«      rŒ%	 |j                  d«      \  }}	|j                  d«      j                  «       }|	j                  d«      j                  «       }	|	||<   Œ~ 	 ddd«       ddd«       |S c c}w # t        $ r Y  ddd«       ddd«       yw xY w# 1 sw Y   Œ8xY w# 1 sw Y   |S xY w# t        $ r Y |S w xY w)záExtract Maven coordinates from a given JAR file, if possible.

        JARs build by Maven (most popular Java build system) contain
        'pom.properties' file. We can extract Maven coordinates
         from there.
        z*META-INF/maven/[^/]+/[^/]+/pom.properties$é   Nr   ó   #ó   =Úutf8)r=   r?   ÚreÚcompiler@   ÚmatchÚlenÚopenÚ	readlinesÚstripÚ
startswithr   ÚdecodeÚ
ValueErrorrA   )
r4   ÚpropsrC   ÚrÚxÚresultÚprops_fÚlineÚkeyÚvalues
             r8   r%   zJars.get_maven_idd   sl  € ð ˆð	Ü—‘ Ó*ð ,¨aÜ—J‘JÐKÓL�Ø%&§Z¡Z£\Ö@ °Q·W±W¸QµZš!Ð@�Ð@Ü�v“; !Ò#Ø÷	,ð ,ð
 —V‘V˜F 1™IÓ&ð 
,¨'Ø '× 1Ñ 1Ó 3ò 	,˜Ø#Ÿz™z›|˜Ø#Ÿ™¨tÕ4ð,Ø/3¯z©z¸$Ó/?¡  eØ&)§j¡j°Ó&8×&>Ñ&>Ó&@ Ø(-¯©°VÓ(<×(BÑ(BÓ(D Ø-2  c¢
ñ	,÷
,÷,ð$ ˆùò! Aøô $.ò ,Ù'+÷
,÷,ð ,ð,ú÷
,ð 
,ú÷,ð$ ˆûô ò 	ØØˆð	ús›   „E+ ™(EÁD-ÁD-ÁEÁ-E+ Á6EÂ
5EÃAD2ÄEÄEÄ#E+ Ä-EÄ2	E	Ä;EÄ=EÅE+ ÅE	ÅEÅE	ÅEÅE(Å#E+ Å(E+ Å+	E8Å7E8c                 ó&  — d}	 t        | d¬«      5 }t        j                  «       }t        t	        |j
                  d«      d«      D ]  }|j                  |«       Œ 	 ddd«       j                  «       }|S # 1 sw Y   ŒxY w# t        $ r Y |S w xY w)zHCompute JAR id.

        Returns sha1 hash of a given JAR file.
        r   Úrb)Úmodei   r:   N)	rM   Úhashlibr   Úiterr   ÚreadÚupdateÚ	hexdigestrA   )r4   r5   rC   ÚmÚbufs        r8   r&   zJars.get_jar_id‚   s’   € ð ˆð	Ü�h TÔ*ð "¨aÜ—L‘L“N�Ü¤¨¯©°Ó 5°sÓ;ò "�CØ—H‘H˜S•Mñ"÷"ð —[‘[“]ˆFð ˆ÷"ð "ûô
 ò 	ØØˆð	ús)   „B ‘AA7ÁB Á7B Á<B Â	BÂBN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr   ÚstrÚoption_listr   r   r9   Ústaticmethodr#   r%   r&   © r:   r8   r   r      s�   „ àD€Jà€KØ€HáÐ$¨b¸3ØEô	GáÐ'°Ø-ô	/ð€Kð€MðÐò!IðF ñó ðð ñó ðð: ñó ñr:   r   )r^   r'   r    rI   r=   Ú	functoolsr   Úsos.report.pluginsr   r   r   r   rn   r:   r8   ú<module>rq      s/   ðó Û Û 	Û 	Û Ý ß >Ñ >ô}ˆ6�<õ }r:   