id{dddlZddlZddlZddlZddlZddlmZddlmZm Z m Z Gddee Z y)N)partial)Plugin RedHatPlugin PluginOptceZdZdZdZdZeddededd d gZd Z d Z dZ e dZ e dZe dZy)Jarsz1Collect information about available Java archivesjars)javaappend_locationsz,colon-delimited list of additional JAR paths)defaultval_typedescall_known_locationsFzscan all known paths)r r)z/usr/share/javaz /usr/lib/java)z/optz /usr/localz/var/libcdgi}g}ttj}|jdr|ttjz }|jd}|r||j dz }|D]`}t j|D]F\}}}|D];} |j|| } tj| s+|j| =Hb|D]K} tj| } tj| } | s| s2| | | d}|dj|Mtj|dd}|j|d d y) Nr rr :)pathsha1maven_id),z: )indent separatorsz jars.jsonT)plug_dir)listr jar_locations get_optionextra_jar_locationssplitoswalk path_joinis_jarappend get_maven_id get_jar_idjsondumpsadd_string_as_file)selfresults jar_paths locationsuser_locationslocationdirpath_ filenamesfilenamerjar_pathrjar_idrecord results_strs 9/usr/lib/python3/dist-packages/sos/report/plugins/jars.pysetupz Jars.setup1sU2, ++, ??0 1 d667 7I);<  --c2 2I" /H)+): /%I )/H>>'8>$ G$6$6t$< __T*$a-=#$$=$  $ W//0  s5A? A3A?)A?3A<8A?<A??BBci} tj|5}tjd}|j Dcgc]}|j |s|}}t |dk7r dddy|j|d5}|jD]|}|j}|jdr% |jd\}} |jdj}| jdj} | ||<~ dddddd|Scc}w#t$rYddddddywxYw#1swY8xYw#1swY|SxYw#t$rY|SwxYw)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#=utf8)r=r?recompiler@matchlenopen readlinesstrip startswithrdecode ValueErrorrA) r4propsrCrxresultprops_flinekeyvalues r8r%zJars.get_maven_iddsl * ,aJJKL%&ZZ\@QWWQZ!@@v;!#  , , VVF1I& ,' ' 1 1 3 ,#zz|#t4,/3zz$/? e&)jj&8&>&>&@(- V(<(B(B(D-2c  , ,  ,$ !A$.,'+ ,  , ,, , ,  ,$     sE+(ED-D-E-E+6E 5EAD2EE#E+-E2 E ;E=EE+E EE EE(#E+(E++ E87E8c&d} t|d5}tj}tt |j ddD]}|j | dddj}|S#1swYxYw#t$rY|SwxYw)zHCompute JAR id. Returns sha1 hash of a given JAR file. r rb)modeir:N) rMhashlibriterrreadupdate hexdigestrA)r4r5rCmbufs r8r&zJars.get_jar_ids  hT* "aLLN 5s;"CHHSM" "[[]F  " "     s) BA A7B7B<B BBN)__name__ __module__ __qualname__ short_desc plugin_nameprofilesrstr option_listrrr9 staticmethodr#r%r&r:r8rrsDJKH$b3E G'- /KM !IF  :r:r) r^r'r rIr= functoolsrsos.report.pluginsrrrrrnr:r8rqs/ >>}6<}r: