File: //lib/python3/dist-packages/sos/report/plugins/__pycache__/jars.cpython-38.pyc
U
i��d{ � @ s^ d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm Z m
Z
G dd� dee �ZdS )� N)�partial)�Plugin�RedHatPlugin� PluginOptc @ sj e Zd ZdZdZdZeddedd�edd d
d�gZdZ d
Z
dd� Zedd� �Z
edd� �Zedd� �ZdS )�Jarsz1Collect information about available Java archives�jars)�java�append_locations� z,colon-delimited list of additional JAR paths)�defaultZval_type�desc�all_known_locationsFzscan all known paths)r r )z/usr/share/javaz
/usr/lib/java)z/optz
/usr/localz/var/libc C s� dg i}g }t tj�}| �d�r.|t tj�7 }| �d�}|rJ||�d�7 }|D ]D}t�|�D ]4\}}}|D ]$} | �|| �}
t� |
�rj|�
|
� qjq\qN|D ]:}t�|�}t�|�}
|s�|
r�||
|d�}|d �
|� q�t
j|ddd�}| j|d d
d� d S )Nr r
r �:)�path�sha1�maven_id� )�,z: )�indentZ
separatorsz jars.jsonT)Zplug_dir)�listr �
jar_locationsZ
get_option�extra_jar_locations�split�os�walkZ path_join�is_jar�append�get_maven_id�
get_jar_id�json�dumpsZadd_string_as_file)�selfZresultsZ jar_pathsZ locationsZuser_locations�location�dirpath�_� filenames�filenamer �jar_pathr �jar_id�recordZresults_str� r* �9/usr/lib/python3/dist-packages/sos/report/plugins/jars.py�setup1 s2
�z
Jars.setupc C sl t j�| �rht�| �rhz6t�| ��"}d|�� kr@W 5 Q R � W dS W 5 Q R X W n ttjfk
rf Y nX dS )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'.
zMETA-INF/MANIFEST.MFTF) r r �isfile�zipfileZ
is_zipfile�ZipFile�namelist�IOErrorZ
BadZipfile)r �fr* r* r+ r T s zJars.is_jarc s i }z�t �| ���}t�d�� � fdd�|�� D �}t|�dkrNW 5 Q R � W dS |�|d ���}|�� D ]|}|�� }|� d�sfz6|�
d�\}}|�d ��� }|�d ��� }|||<