
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
UZ                 @   s|   d dl Z d dlZd dlmZ d dlmZ d dlZejdddZe	edsPeje_
ej
Zdd	 Zd
d ZdddZdd ZdS )    N)sstr)transactionzrhn-client-toolsT)Zfallbackugettextc              K   sV   t j }|j }x$| j D ]}|j|tj| |  qW g }x|D ]}|j| q@W |S )z@ just cause this is such a potentially useful looking method... )r   initReadOnlyTransactiondbMatchkeyspatternrpmZRPMMIRE_GLOBappend)kwargs_tsZmikeywordZ
headerListh r   /usr/lib/python3.6/rpmUtils.pyinstalledHeaderByKeyword   s    
r   c             C   s~  i }g }g }xf| D ]\}|d |d |d |d d}x.|j  D ]"}|| dks^|| dkrB||= qBW tf |}t|dkr|j| x|D ]}|d }	|	dkrd}	|d	 }
|
dkrd}
|d
 |d |d |	|
f}|d	 dkrd|d |d |d f }n d|d |d |d |d f }d| }tj|}|j }|j  g }x|D ]}|j|j  qHW |j||g qW qW ||fS )zf given a list of package labels, run rpm -V on them
        and return a dict keyed off that data
    r            )nameversionreleasearchN epochr   r   r   r   z%s-%s-%sz%s-%s-%s.%sz/usr/bin/rpmverify -V %s)	r   r   lenr
   ospopen	readlinesclosestrip)ZpackagesdataZmissing_packagesZretlistpackagekeywordskeyZheadersheaderr   r   ZpkgZpackageLabelZverifystringfdresZreslistliner   r   r   verifyPackages*   sH    



 

r)   c       
      C   s~  g }| dkr| t d tj }d}d}x"|j D ]}|dkr@P |d }q2W |}d}x|j D ]}|dkrpP t|d |d t|d t|d |d	 d
}	|	d dkrd|	d< nd|	d  |	d< |r|d |	d< |	d rt|	d |	d< |j|	 nP|r@|d rt|d |	d< |d r4t|d |	d< |j|	 n
|j|	 |dkr^||| |d }q`W |jdd d |S )z| Return list of packages. Package is hash with keys name, epoch,
        version, release and optionaly arch and cookie
    Nz0Getting list of packages installed on the systemr   r   r   r   r   r   installtime)r   r   r   r   r*   r   z%sr   Zcookiec             S   s   | d | d | d | d fS )Nr   r   r   r   r   )xr   r   r   <lambda>   s    z)getInstalledPackageList.<locals>.<lambda>)r$   )_r   r   r   r   r
   sort)
ZmsgCallbackZprogressCallbackZgetArchZgetInfoZpkg_listr   countZtotalr   r"   r   r   r   getInstalledPackageListl   sP    








r0   c               C   s2   yt jt j W n tk
r,   td Y nX dS )zSet rpm's verbosity mode
    z4extra verbosity not supported in this version of rpmN)r	   ZsetVerbosityZRPMLOG_DEBUGAttributeErrorprintr   r   r   r   setDebugVerbosity   s    r3   )NNNN)r   r	   Zrhn.i18nr   Zup2date_clientr   gettextZtranslationthasattrr   r-   r   r)   r0   r3   r   r   r   r   <module>   s   
B 
9