<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
ft`                 @   s   d dl mZ d dl mZ d dl mZ d dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dl	Zd dlZd dlZd dlZd dlZejdZG d	d
 d
ejZdS )    )absolute_import)print_function)unicode_literalsN)commands)OptionParser)ucd_C_dnfc               @   sP   e Zd ZdZdZedZedd Zdd Z	d	d
 Z
dd Zdd Zdd ZdS )SearchCommandzTA class containing methods needed by the cli to execute the
    search command.
    searchsez+search package details for the given stringc          	   C   s<   | j ddtdd | j ddtddgd tjtd	d
 d S )Nz--all
store_truez'search also package description and URL)actionhelpquery_string+ZKEYWORDallzKeyword to search for)nargsmetavarchoicesdefaultr   r   )add_argumentr   r   ZPkgNarrowCallback)parser r   /usr/lib/python3.6/search.pyset_argparser0   s    zSearchCommand.set_argparserc                s4  t jdtddfdtddfdtddfdtd	ff  fd
dfdd}tjj }x(|D ] }j|d| j|d| qbW jj	rxd|D ] }j|d| j|d| qW n:t
|}t|j }x$|D ]}t
|j||kr||= qW d}d}	d}
d}d}jjjs0jjj j|j dj }t }x|jd|dD ]}jjjs~|j|j |krlqF|j|j|j  ||j|kr|j|}d}|	|j|kr|j|}	d}|
|j||	kkr|j||	k}
d}|r||
||	 d}jjj||j|| qFW t
|dkr0tjtd dS )z0Search for simple text tags in a package object.nameZlongNamesummaryZSummarydescriptionZDescriptionZurlZURLc          	      s   y |  S    | S d S )Nr   )attr)	TRANS_TBLr   r   _translate_attrC   s    z.SearchCommand._search.<locals>._translate_attrc                s^   t  |}tdj|}| r*td| }ntd| }jjj|dj| }tt| d S )Nz & z%s Exactly Matched: %%sz%s Matched: %%sz, )mapr   joinbaseoutputZ
fmtSectionprintr   )exact_matchZattrskeysZtrans_attrsZtrans_attrs_strZsection_textZ	formatted)r#   selfr   r   _print_section_headerI   s    
z4SearchCommand._search.<locals>._print_section_headerNF)pkgT)reverseZlimit_tor   zNo matches found.) collectionsOrderedDictr	   r   r
   Zmatch_counterZMatchCounter_search_countedoptsr   lenlistr*   matched_needlesr&   ZconfZshowdupesfromrepossackqueryfiltermZlatestsetsortedr   ZarchaddZmatched_keysZmatched_haystacksr'   Zmatchcallbackloggerinfo)r+   argsr,   counterargZneedlesZpkgsr-   Z
used_attrsr5   r)   Zprint_section_headerlimitseenr   )r"   r#   r+   r   _search9   s`    






zSearchCommand._searchc             C   s`   d| |i}t jj|r$d| |i}| jjj jtjf|}x|j	 D ]}|j
||| qFW |S )Nz
%s__substrz%s__glob)r
   utilZis_glob_patternr&   r6   r7   r8   hawkeyZICASErunr;   )r+   r?   r!   ZneedleZfdictqr-   r   r   r   r1      s    zSearchCommand._search_countedc             C   s    | j js| jjtjtjd d S )N)stdoutstderr)r2   quietcliZredirect_loggerloggingZWARNINGINFO)r+   r   r   r   pre_configure   s    zSearchCommand.pre_configurec             C   sD   | j js| jj  | jj}d|_d|_d|_| j jp:| j j	| j _d S )NTF)
r2   rJ   rK   Zredirect_repo_progressdemandsZavailable_reposZfresh_metadataZsack_activationr   Zquery_string_action)r+   rO   r   r   r   	configure   s    
zSearchCommand.configurec             C   s   t jtd | j| jjS )NzSearching Packages: )r<   debugr   rC   r2   r   )r+   r   r   r   rF      s    zSearchCommand.runN)r   r   )__name__
__module____qualname____doc__aliasesr   r   staticmethodr   rC   r1   rN   rP   rF   r   r   r   r   r   (   s   	O		r   )Z
__future__r   r   r   r/   Zdnf.clir   Zdnf.cli.option_parserr   Zdnf.i18nr   r   r	   r
   Zdnf.match_counterZdnf.utilrE   rL   Z	getLoggerr<   ZCommandr   r   r   r   r   <module>   s   
