File: //lib/python3.6/site-packages/sos/report/plugins/__pycache__/jars.cpython-36.pyc
3
-�_g� � @ s^ d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm Z m
Z
G dd� dee �ZdS )� N)�partial)�Plugin�RedHatPlugin� PluginOptc @ s^ e Zd ZdZdZdZeddedd�edd d
d�gZdZ dZ
dd� Zdd� Zdd� Z
dd� ZdS )�Jarsz1Collect information about available Java archives�jars�javazappend-locations� z,colon-delimited list of additional JAR paths)�defaultZval_type�desczall-known-locationsFzscan all known paths)r
r �/usr/share/java�
/usr/lib/java�/opt�
/usr/local�/var/libc C s dg i}g }t tj�}| jd�r.|t tj�7 }| jd�}|rJ||jd�7 }xT|D ]L}xFtj|�D ]8\}}}x,|D ]$} | j|| �}
| j |
�rp|j
|
� qpW q`W qPW xB|D ]:}| j|�}| j|�}
|s�|
r�||
|d�}|d j
|� q�W t
j|dd
d �}| j|d
dd� d S )Nr zall-known-locationszappend-locations�:)�path�sha1�maven_id� �,�: )�indentZ
separatorsz jars.jsonT)Zplug_dir)r r )�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)�self�resultsZ jar_pathsZ locationsZuser_locations�location�dirpath�_� filenames�filenamer �jar_pathr �jar_id�recordZresults_str� r/ �/usr/lib/python3.6/jars.py�setup1 s0
z
Jars.setupc C s� t jj|�r�tj|�r�y*tj|��}d|j� kr4dS W dQ R X W n> ttjfk
r~ } z| j d|� d|� �� W Y dd}~X 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.MFTNzCould not determine if z is a JAR: F)
r r �isfile�zipfileZ
is_zipfile�ZipFile�namelist�IOErrorZ
BadZipfile� _log_info)r% r �file�errr/ r/ r0 r T s $zJars.is_jarc
s i }y�t j|���}tjd�� � fdd�|j� D �}t|�dkrBdS |j|d ��v}xn|j� D ]b}|j� }|j d�s\y6|j
d�\}}|jd �j� }|jd �j� }|||<