
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
šgt`l  ã               @   s^   d dl mZ d dl mZ d dlmZ d dlmZ d dlZd dlZ	d dl
Z
G dd„ dejƒZdS )é    )Úabsolute_import)Úunicode_literals)Úucd)ÚloggerNc                   s<   e Zd ZdZ‡ fdd„Zedd„ ƒZdd„ Zdd	„ Z‡  Z	S )
ÚBashCompletionCacheZgenerate_completion_cachec                s"   t t| ƒj||ƒ || _d| _d S )Nz/var/cache/dnf/packages.db)Úsuperr   Ú__init__ÚbaseÚ
cache_file)Úselfr	   Zcli)Ú	__class__© ú//usr/lib/python3.6/generate_completion_cache.pyr      s    zBashCompletionCache.__init__c             C   s   t jd| ƒ d S )NzCompletion plugin: %s)r   Údebug)Úmsgr   r   r   Ú_out$   s    zBashCompletionCache._outc             C   s   d}x,| j jjƒ D ]}|jdk	r|jjrd}P qW tjj| jƒ sF|rüy~t	j
| jƒ�h}| jdƒ |jƒ }|jdƒ |jdƒ |jdƒ | j jjƒ jƒ }dd	„ |D ƒ}|jd
|ƒ |jƒ  W dQ R X W n6 t	jk
rú } z| jdt|ƒ ƒ W Y dd}~X nX dS )z& Generate cache of available packages FNTzGenerating completion cache...z/create table if not exists available (pkg TEXT)zAcreate unique index if not exists pkg_available ON available(pkg)zdelete from availablec             S   s    g | ]}|j d krt|ƒg‘qS )Úsrc)ÚarchÚstr)Ú.0Úxr   r   r   ú
<listcomp>@   s    z,BashCompletionCache.sack.<locals>.<listcomp>z*insert or ignore into available values (?)z Can't write completion cache: %s)r	   ZreposZiter_enabledZmetadataÚfreshÚosÚpathÚexistsr
   Úsqlite3Úconnectr   ÚcursorÚexecuteÚsackÚqueryZ	availableÚexecutemanyÚcommitÚOperationalErrorr   )r   r   ZrepoÚconnÚcurZ
avail_pkgsZavail_pkgs_insertÚer   r   r   r    (   s,    

zBashCompletionCache.sackc             C   sÊ   | j s
dS y„tj| jƒ�n}| jdƒ |jƒ }|jdƒ |jdƒ |jdƒ tjj	| j
ƒjƒ jƒ }dd„ |D ƒ}|jd|ƒ |jƒ  W dQ R X W n6 tjk
rÄ } z| jd	t|ƒ ƒ W Y dd}~X nX dS )
z& Generate cache of installed packages NzGenerating completion cache...z/create table if not exists installed (pkg TEXT)zAcreate unique index if not exists pkg_installed ON installed(pkg)zdelete from installedc             S   s    g | ]}|j d krt|ƒg‘qS )r   )r   r   )r   r   r   r   r   r   V   s    z3BashCompletionCache.transaction.<locals>.<listcomp>z*insert or ignore into installed values (?)z Can't write completion cache: %s)Útransactionr   r   r
   r   r   r   Údnfr    Z_rpmdb_sackr	   r!   Z	installedr"   r#   r$   r   )r   r%   r&   Z	inst_pkgsZinst_pkgs_insertr'   r   r   r   r(   G   s"    


zBashCompletionCache.transaction)
Ú__name__Ú
__module__Ú__qualname__Únamer   Ústaticmethodr   r    r(   Ú__classcell__r   r   )r   r   r      s
   r   )Z
__future__r   r   Zdnf.i18nr   Zdnfpluginscorer   r)   Zos.pathr   r   ZPluginr   r   r   r   r   Ú<module>   s   