Current File : //usr/lib/python3/dist-packages/sos/report/plugins/__pycache__/jars.cpython-312.pyc
�

-�_g���d�ddlZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
Gd�dee	�Zy)�N)�partial)�Plugin�RedHatPlugin�	PluginOptc�f�eZdZdZdZdZedded��edd	d
��gZdZ	d
Z
d�Zd�Zd�Z
d�Zy)�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��dgi}g}ttj�}|jd�r|ttj�z
}|jd�}|r||jd�z
}|D]\}t
j|�D]B\}}}|D]7}	|j||	�}
|j|
�s�'|j|
��9�D�^|D]C}|j|�}|j|�}
|s|
s�*||
|d�}|dj|��Etj|dd��}|j|d	d
��y)Nr	rr�:)�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�setupz
Jars.setup1sU���2�,���	���+�+�,�	��?�?�0�1���d�6�6�7�7�I����);�<�����-�-�c�2�2�I�"�	/�H�)+����):�
/�%���I� )�/�H��>�>�'�8�<�D��{�{�4�(�!�(�(��.�/�
/�	/�"�	/�H��(�(��2�H��_�_�X�.�F��6�"*�"(�&.������&�&�v�.�	/��j�j���{�K������[�4��H�c�x�tjj|�rRtj|�r=	tj
|�5}d|j
�vr
	ddd�y	ddd�yy#1swYyxYw#ttjf$r!}|jd|�d|���Yd}~yd}~wwxYw)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.MFNTzCould not determine if z is a JAR: F)
r!r�isfile�zipfile�
is_zipfile�ZipFile�namelist�IOError�
BadZipfile�	_log_info)r+r�file�errs    r9r$zJars.is_jarTs����7�7�>�>�$��G�$6�$6�t�$<�
��_�_�T�*�$�d�-�����@�#�$�$�@�$��$���	�W�/�/�0�
����-�d�V�;�s�e�D�����	
�s;�A?�A3�A?�)A?�3A<�8A?�<A?�?B9�B4�4B9c�2�i}	tj|�5}tjd�}|j	�D�cgc]}|j|�s�|��}}t
|�dk7r
	ddd�y|j|d�5}|j�D]|}|j�}|jd�r�%	|jd�\}	}
|	jd�j�}	|
jd�j�}
|
||	<�~	ddd�ddd�|Scc}w#t$rYddd�ddd�ywxYw#1swY�8xYw#1swY|SxYw#t$r"}|jd|�d	|���Yd}~|Sd}~wwxYw)
z�Extract 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>r@�re�compilerA�match�len�open�	readlines�strip�
startswithr �decode�
ValueErrorrBrD)r+r5�propsrE�rgx�x�result�props_f�line�key�valuerFs            r9r&zJars.get_maven_ides�����	�����*�
,�d��j�j�!M�N��%)�]�]�_�E���	�	�!��!�E��E��v�;�!�#��	
,�
,�
�Y�Y�v�a�y�)�
,�W� '� 1� 1� 3�	,��#�z�z�|��#���t�4�,�/3�z�z�$�/?���e�&)�j�j��&8�&>�&>�&@��(-���V�(<�(B�(B�(D��-2��c�
�	,�
,�
,�(���%F��$.�,�'+�
,�
,�
,�,��
,�
,��
,�(���	�	��N�N�;�H�:�R��u�M�
�
����		�s��E+�(E�D-�D-�E�-E+�6E�
5E�AD2�E�E�#E+�-E�2	E	�;E�=E�E+�E	�E�E	�E�E(�#E+�(E+�+	F�4F�Fc�b�d}	t|d��5}tj�}tt	|j
d�d�D]}|j
|��	ddd�j�}|S#1swY�xYw#t$r"}|jd|�d|���Yd}~|Sd}~wwxYw)	zHCompute JAR id.

        Returns sha1 hash of a given JAR file.
        r�rb)�modeir;NzCould not compute JAR id for r)
rP�hashlibr�iterr�read�update�	hexdigestrBrD)r+r5r6rE�digest�bufrFs       r9r'zJars.get_jar_id�s���
��	N��h�T�*�
'�d� ��������	�	�4� 8�#�>�'�C��M�M�#�&�'�
'��%�%�'�F��
�
'�
'��
�	N��N�N�:�8�*�B�s�e�L�M�M��
��	N�s/�
B�AA7�B�7B�<B�	B.�B)�)B.N)�__name__�
__module__�__qualname__�
short_desc�plugin_name�profilesr�str�option_listrrr:r$r&r'�r;r9rrs`��D�J��K��H��$�b�3�E�	G��'��-�	/��K��M���!I�F�"�>r;r)rar(r!rLr>�	functoolsr�sos.report.pluginsrrrrrpr;r9�<module>rss/����	�	���>�>�~�6�<�~r;