
    ~ g                     d    S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
   " S S\\	5      rg)    N)partial)PluginRedHatPlugin	PluginOptc                   b    \ rS rSrSrSrSr\" SS\SS9\" S	S
SS9/r	Sr
SrS rS rS rS rSrg)Jars   z1Collect 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                    S/ 0n/ n[        [        R                  5      nU R                  S5      (       a  U[        [        R                  5      -  nU R                  S5      nU(       a  X4R                  S5      -  nU Hf  n[        R                  " U5       HI  u  pgnU H=  n	U R                  Xi5      n
U R                  U
5      (       d  M,  UR                  U
5        M?     MK     Mh     U HO  nU R                  U5      nU R                  U5      nU(       d	  U(       d  M5  UUUS.nUS   R                  U5        MQ     [        R                  " USSS9nU R                  US	S
S9  g )Nr
   r   r   :)pathsha1maven_id   ),: )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setup
Jars.setup1   sC   2,	++,	??011d6677I );<--c22I "H)+):%I )H>>'<D{{4((!((. !* *; " "H((2H__X.F66"*"(&. &&v. " jj{K[4H    c                    [         R                  R                  U5      (       a[  [        R                  " U5      (       a@   [        R
                  " U5       nSUR                  5       ;   a
   SSS5        g SSS5        gg! , (       d  f       g= f! [        [        R                  4 a!  nU R                  SU SU 35         SnAgSnAff = f)zCheck 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.MFNTzCould not determine if z is a JAR: F)
r"   r   isfilezipfile
is_zipfileZipFilenamelistIOError
BadZipfile	_log_info)r,   r   fileerrs       r:   r%   Jars.is_jarT   s     77>>$G$6$6t$<$<__T*d-@# +*@ +  +* 	 W//0 -dV;seD  	s<   B B-B 7B 
BB B C,CCc                 j   0 n [         R                  " U5       n[        R                  " S5      nUR	                  5        Vs/ s H  oTR                  U5      (       d  M  UPM     nn[        U5      S:w  a
   SSS5        gUR                  US   5       nUR                  5        H  nUR                  5       nUR                  S5      (       a  M+   UR                  S5      u  pU	R                  S5      R                  5       n	U
R                  S5      R                  5       n
XU	'   M     SSS5        SSS5        U$ s  snf ! [         a       SSS5        SSS5        gf = f! , (       d  f       N>= f! , (       d  f       U$ = f! [         a"  nU R                  SU S	U 35         SnAU$ SnAff = f)
zExtract 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      #   =utf8z)Could not extract Maven coordinates from r   )r@   rB   recompilerC   matchlenopen	readlinesstrip
startswithr!   decode
ValueErrorrD   rF   )r,   r6   propsrG   rgxxresultprops_flinekeyvaluerH   s               r:   r'   Jars.get_maven_ide   sy    	*djj!MN%)]]_E_		!!_Ev;!#	 +*
 YYvay)W ' 1 1 3#zz|#t44,/3zz$/?&)jj&8&>&>&@(-V(<(B(B(D-2c
 !4 * +( % F $. ,'+ * +*, *) +*( 	  	NN;H:RuM  		s   F )E4D= D=&E48F E48E#AE'E#+E43F =E4
E 	E#E4F E 	 E##
E1	-E44
F>F F 
F2F--F2c                 l   Sn [        USS9 n[        R                  " 5       n[        [	        UR
                  S5      S5       H  nUR                  U5        M     SSS5        WR                  5       nU$ ! , (       d  f       N = f! [         a"  nU R                  SU SU 35         SnAU$ SnAff = f)	z8Compute JAR id.

Returns sha1 hash of a given JAR file.
r   rb)modei   r=   NzCould not compute JAR id for r   )
rS   hashlibr   iterr   readupdate	hexdigestrD   rF   )r,   r6   r7   rG   digestbufrH   s          r:   r(   Jars.get_jar_id   s    
 	NhT*d 		4 8#>CMM#& ? + %%'F  +*
  	NNN:8*BseLMM	Ns/   
B AA6B 6
B B 
B3B..B3 N)__name__
__module____qualname____firstlineno__
short_descplugin_nameprofilesr   stroption_listr   r    r;   r%   r'   r(   __static_attributes__rm   r=   r:   r   r      s`    DJKH$b3E	G'-	/KM!IF">r=   r   )re   r)   r"   rO   r@   	functoolsr   sos.report.pluginsr   r   r   r   rm   r=   r:   <module>rz      s/      	 	   > >~6< ~r=   