a
    Tsg#                     @   s:  d dl Zd dlZd dlZd dlZdd Zdd ZG dd dejjj	j
ZG dd	 d	ejjjjZG d
d dejjjjZG dd dejjjZG dd dejjjjZG dd dejjjjZG dd dejjjjZG dd dejjjjZdd Z e!dkr6ze ej"dd  W n e#y4   e$d Y n0 dS )    Nc                    s   t  fdd|S )Nc                    s   t |  S N)str
startswith)kkw =/usr/lib/python3.9/site-packages/dnf/cli/completion_helper.py<lambda>       z#filter_list_by_kw.<locals>.<lambda>)filter)r   Zlstr   r   r	   filter_list_by_kw   s    r   c                 C   s   t dd | D S )Nc                 S   s   g | ]}t |qS r   )r   ).0xr   r   r	   
<listcomp>!   r   z%listpkg_to_setstr.<locals>.<listcomp>)set)pkgsr   r   r	   listpkg_to_setstr    s    r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )RemoveCompletionCommandc                    s   t t| | d S r   )superr   __init__selfargs	__class__r   r	   r   $   s    z RemoveCompletionCommand.__init__c                 C   s   d| j j_d| j j_d S NFT)clidemands	root_usersack_activationr   r   r   r	   	configure'   s    
z!RemoveCompletionCommand.configurec                 C   s(   t | j| jjD ]}tt| qd S r   )ListCompletionCommand	installedbaseopts	pkg_specsprintr   r   pkgr   r   r	   run+   s    zRemoveCompletionCommand.run__name__
__module____qualname__r   r"   r+   __classcell__r   r   r   r	   r   #   s   r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )InstallCompletionCommandc                    s   t t| | d S r   )r   r1   r   r   r   r   r	   r   1   s    z!InstallCompletionCommand.__init__c                 C   s"   d| j j_d| j j_d| j j_d S r   r   r   r   Zavailable_reposr    r!   r   r   r	   r"   4   s    

z"InstallCompletionCommand.configurec                 C   sJ   t t| j| jj}t t| j| jj}|| D ]}tt| q4d S r   	r   r#   r$   r%   r&   r'   	availabler(   r   r   r$   r4   r*   r   r   r	   r+   9   s    

zInstallCompletionCommand.runr,   r   r   r   r	   r1   0   s   r1   c                       s,   e Zd Z fddZdd Zdd Z  ZS )ReinstallCompletionCommandc                    s   t t| | d S r   )r   r6   r   r   r   r   r	   r   C   s    z#ReinstallCompletionCommand.__init__c                 C   s"   d| j j_d| j j_d| j j_d S r   r2   r!   r   r   r	   r"   F   s    

z$ReinstallCompletionCommand.configurec                 C   sJ   t t| j| jj}t t| j| jj}||@ D ]}tt| q4d S r   r3   r5   r   r   r	   r+   K   s    

zReinstallCompletionCommand.runr,   r   r   r   r	   r6   B   s   r6   c                       sH   e Zd Z fddZdd Zedd Zedd Zed	d
 Z  Z	S )r#   c                    s   t t| | d S r   )r   r#   r   r   r   r   r	   r   T   s    zListCompletionCommand.__init__c                 C   s   | j }| jj}| jj}t|dkrH|d |vrHtdt|d | n|dkr`| | j	|}n||dkrx| 
| j	|}nd|dkr| | j	|}nLt| 
| j	|}t| | j	|}||B }|stdt|d | d S |D ]}tt| qd S )N   
r$   r4   updatesr   )Z
pkgnarrowsr&   ZpackagesZpackages_actionlenr(   joinr   r$   r%   r4   r9   r   r   )r   subcmdsr   actionr   r4   r$   r*   r   r   r	   r+   W   s&    zListCompletionCommand.runc                 C   s    | j   jd|d dS N{}*r   )Z
name__glob)sackqueryr$   filtermformatr%   argr   r   r	   r$   n   s    zListCompletionCommand.installedc                 C   s    | j   jd|d dS r>   )r@   rA   r4   rB   rC   rD   r   r   r	   r4   r   s    zListCompletionCommand.availablec                 C   s   | j d|d gddS )Nr?   r   F)print_)Zcheck_updatesrC   rD   r   r   r	   r9   v   s    zListCompletionCommand.updates)
r-   r.   r/   r   r+   staticmethodr$   r4   r9   r0   r   r   r   r	   r#   S   s   

r#   c                       s$   e Zd Z fddZdd Z  ZS )RepoListCompletionCommandc                    s   t t| | d S r   )r   rH   r   r   r   r   r	   r   |   s    z"RepoListCompletionCommand.__init__c                 C   s   | j }|jdkr>tdt|jd dd | jj D  nn|jdkrvtdt|jd dd | jj D  n6|jdkrtdt|jd d	d | jj D  d S )
Nenabledr8   r   c                 S   s   g | ]
}|j qS r   idr   rr   r   r	   r      r   z1RepoListCompletionCommand.run.<locals>.<listcomp>Zdisabledc                 S   s   g | ]}|j s|jqS r   )rI   rK   rL   r   r   r	   r      r   allc                 S   s   g | ]
}|j qS r   rJ   rL   r   r   r	   r      r   )	r&   Zrepos_actionr(   r;   r   Zreposr%   Ziter_enabledrN   r   r   r   r	   r+      s    




zRepoListCompletionCommand.runr-   r.   r/   r   r+   r0   r   r   r   r	   rH   {   s   rH   c                       s,   e Zd Z fddZdd Zdd Z  ZS )UpgradeCompletionCommandc                    s   t t| | d S r   )r   rP   r   r   r   r   r	   r      s    z!UpgradeCompletionCommand.__init__c                 C   s"   d| j j_d| j j_d| j j_d S r   r2   r!   r   r   r	   r"      s    

z"UpgradeCompletionCommand.configurec                 C   s(   t | j| jjD ]}tt| qd S r   )r#   r9   r%   r&   r'   r(   r   r)   r   r   r	   r+      s    zUpgradeCompletionCommand.runr,   r   r   r   r	   rP      s   rP   c                       s,   e Zd Z fddZdd Zdd Z  ZS )DowngradeCompletionCommandc                    s   t t| | d S r   )r   rQ   r   r   r   r   r	   r      s    z#DowngradeCompletionCommand.__init__c                 C   s"   d| j j_d| j j_d| j j_d S r   r2   r!   r   r   r	   r"      s    

z$DowngradeCompletionCommand.configurec                 C   s,   t | j| jj D ]}tt| qd S r   )r#   r4   r%   r&   r'   Z
downgradesr(   r   r)   r   r   r	   r+      s    zDowngradeCompletionCommand.runr,   r   r   r   r	   rQ      s   rQ   c                       s$   e Zd Z fddZdd Z  ZS )CleanCompletionCommandc                    s   t t| | d S r   )r   rR   r   r   r   r   r	   r      s    zCleanCompletionCommand.__init__c                 C   s0   t jjjj }tdt| j	j
d | d S )Nr8   r7   )dnfr   commandscleanZ_CACHE_TYPESkeysr(   r;   r   r&   type)r   r<   r   r   r	   r+      s    zCleanCompletionCommand.runrO   r   r   r   r	   rR      s   rR   c              	   C   s   t jj }t j|}| d dkrP|g g | tdt| d |j d S |j	  |
t |
t |
t |
t |
t |
t |
t |
t ||  z|  W n$ tt jjfy   td Y n0 d S )Nr   Z_cmdsr8   r7   )rS   r   ZBaseCliZCliZinit_pluginsr(   r;   r   Zcli_commandsclearZregister_commandr   r1   r6   r#   rH   rP   rQ   rR   r"   r+   OSError
exceptionsErrorsysexit)r   r%   r   r   r   r	   main   s(    









r^   __main__r7   )%Zdnf.exceptionsrS   Zdnf.cliZdnf.cli.commands.cleanr\   r   r   r   rT   removeZRemoveCommandr   ZinstallZInstallCommandr1   Z	reinstallZReinstallCommandr6   ZListCommandr#   ZrepolistZRepoListCommandrH   ZupgradeZUpgradeCommandrP   Z	downgradeZDowngradeCommandrQ   rU   ZCleanCommandrR   r^   r-   argvKeyboardInterruptr]   r   r   r   r	   <module>   s&   (	
