File: //usr/lib/python3/dist-packages/sos/report/plugins/__pycache__/jars.cpython-310.pyc
o
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)�default�val_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�}|r%||�d�7 }|D ]"}t�|�D ]\}}}|D ]} | �|| �}
t� |
�rG|�
|
� q5q.q'|D ]}t�|�}t�|�}
|s\|
ri||
|d�}|d �
|� qLt
j|ddd�}| j|d d
d� d S )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_str� r5 �9/usr/lib/python3/dist-packages/sos/report/plugins/jars.py�setup1 s:
���
��z
Jars.setupc C s� t j�| �rCt�| �rCz*t�| ��}d|�� v r" W d � W dS W d � W dS 1 s.w Y W dS ttjfyB Y dS w 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.MFNTF) r r �isfile�zipfile�
is_zipfile�ZipFile�namelist�IOError�
BadZipfile)r �fr5 r5 r6 r T s �����zJars.is_jarc sV i }z�t �| ���}t�d�� � fdd�|�� D �}t|�dkr) W d � W dS |�|d ��L}|�� D ]?}|�� }|� d�stz|�
d�\}}|�d ��� }|�d ��� }|||<