a ©!c¢ã@s ddlmZddlmZddlmZddlZddlmZddlmZddl m Z m Z m Z ddl Z ddlZ ddlZ ddlZddlZe d¡ZGd d „d ejƒZdS) é)Úabsolute_import)Úprint_function)Úunicode_literalsN)Úcommands)Ú OptionParser)ÚucdÚ_ÚC_Údnfc@sPeZdZdZdZedƒZedd„ƒZdd„Z dd „Z d d „Z d d „Z dd„Z dS)Ú SearchCommandzTA class containing methods needed by the cli to execute the search command. )ÚsearchZsez+search package details for the given stringc Cs<|jddtdƒd|jddtdƒdgdtjtd ƒd dS) Nz--allÚ store_truez'search also package description and URL)ÚactionÚhelpÚ query_stringú+ZKEYWORDÚallzKeyword to search for)ÚnargsÚmetavarÚchoicesÚdefaultrr)Ú add_argumentrrZPkgNarrowCallback)Úparser©rú;/usr/lib/python3.9/site-packages/dnf/cli/commands/search.pyÚ set_argparser0sÿýzSearchCommand.set_argparsercs$t dtddƒfdtddƒfdtddƒfdtd ƒff¡‰‡fd d „‰‡‡fd d „}tj ¡}|D] }ˆ |d|¡ˆ |d|¡q`ˆjj r²|D] }ˆ |d|¡ˆ |d|¡qŽn6t |ƒ}t |  ¡ƒ}|D]}t |  |¡ƒ|krÊ||=qÊd}d} d} d} d} ˆjjjs$ˆjj ¡j|  ¡d ¡} tƒ} |jd| dD]Ê}ˆjjjsp|j|j| vr^q8|  |j|j¡|| |¡krŽ| |¡}d} | |  |¡kr¬|  |¡} d} | | |¡| kkrÒ| |¡| k} d} | rè|| || ƒd} ˆjj || |¡|¡q8t |ƒdkr t tdƒ¡dS)z0Search for simple text tags in a package object.ÚnameZlongÚNameÚsummaryZSummaryÚ descriptionZ DescriptionÚurlZURLcs z ˆ|WS|YS0dS)Nr)Úattr)Ú TRANS_TBLrrÚ_translate_attrCs z.SearchCommand._search.._translate_attrcs^tˆ|ƒ}tdƒ |¡}|r*tdƒ|}n tdƒ|}ˆjj |d |¡¡}tt|ƒƒdS)Nz & z%s Exactly Matched: %%sz%s Matched: %%sz, )ÚmaprÚjoinÚbaseÚoutputZ fmtSectionÚprintr)Ú exact_matchÚattrsÚkeysZ trans_attrsZtrans_attrs_strZ section_textÚ formatted)r#ÚselfrrÚ_print_section_headerIs  z4SearchCommand._search.._print_section_headerNF)ÚpkgT)ÚreverseZlimit_torzNo matches found.) Ú collectionsÚ OrderedDictr rr Z match_counterZ MatchCounterÚ_search_countedÚoptsrÚlenÚlistr+Úmatched_needlesr&ZconfZshowdupesfromreposÚsackÚqueryÚfiltermZlatestÚsetÚsortedrZarchÚaddZ matched_keysZmatched_haystacksr'Z matchcallbackÚloggerÚinfo)r-Úargsr.ÚcounterÚargZneedlesZpkgsr/Z used_attrsr7r)Zprint_section_headerÚlimitÚseenr)r"r#r-rÚ_search9sb    ü        zSearchCommand._searchcCs`d||i}tj |¡r$d||i}|jj ¡jtjfi|¤Ž}|  ¡D]}|  |||¡qH|S)Nz %s__substrz%s__glob) r ÚutilZis_glob_patternr&r8r9r:ÚhawkeyZICASEÚrunr=)r-rAr!ZneedleZfdictÚqr/rrrr3ˆs    zSearchCommand._search_countedcCs |jjs|jjtjtjddS)N)ÚstdoutÚstderr)r4ÚquietÚcliZredirect_loggerÚloggingZWARNINGÚINFO©r-rrrÚ pre_configure‘szSearchCommand.pre_configurecCsD|jjs|j ¡|jj}d|_d|_d|_|jjp:|jj |j_dS)NTF) r4rLrMZredirect_repo_progressÚdemandsZavailable_reposZfresh_metadataZsack_activationrZquery_string_action)r-rRrrrÚ configure•s zSearchCommand.configurecCst tdƒ¡| |jj¡S)NzSearching Packages: )r>ÚdebugrrEr4rrPrrrrHžszSearchCommand.runN)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚaliasesrrÚ staticmethodrrEr3rQrSrHrrrrr (s O  r )Z __future__rrrr1Zdnf.clirZdnf.cli.option_parserrZdnf.i18nrrr r Zdnf.match_counterZdnf.utilrGrNZ getLoggerr>ZCommandr rrrrÚs