a !cz2@sddlmZddlmZddlmZddlmZmZmZm Z ddl m Z ddl Z ddlZ ddlZ ddlZddlZddlZddlZedZdd Zd d Zd d ZddZGdddejZdS))absolute_import)unicode_literals)commands)_ucdfill_exact_width exact_width) OptionParserNdnfcCsd|rtj|jntd}|jdkr4td|S|jsFtd|St|j}td||fSdS)NunknownzNever (last: %s)zInstant (last: %s)z%s second(s) (last: %s))r utilnormalize_time_repo getTimestamprZmetadata_expire _num2ui_num)repomdlastnumr=/usr/lib/python3.9/site-packages/dnf/cli/commands/repolist.py _expire_str%s    rcCsttjd|dS)Nz%dT)rr Zpycompformat)rrrrr0srcCsF|j}|j}|D](}t||r.dSt||rdSqdS)NTF)idlowernamefnmatch)rpatternsridZrnmpatrrr _repo_match4s    r!cCs:d}|jtjdj|jdD]}||j7}qtjj |S)NrflagsZ reponame__eq) queryhawkeyIGNORE_EXCLUDESfiltermr_sizer clirZ format_number)sackrretpkgrrr _repo_size?s r.c@s@eZdZdZdZedZeddZddZ dd Z d d Z d S) RepoListCommandzVA class containing methods needed by the cli to execute the repolist command. )Zrepolistrepoinfoz,display the configured software repositoriesc Csx|}|jdddddtdd|jddddtd d |jd ddd td d |jddddgdtjtdddS)Nz--all _repos_action store_constallzshow all repos)destactionconstdefaulthelpz --enabledenabledzshow enabled repos (default))r4r5r6r8z --disableddisabledzshow disabled reposrepos*enabled-defaultZ REPOSITORY)r3r9r:zRepository specification)nargsr7metavarchoicesr5r8)add_mutually_exclusive_group add_argumentrr ZPkgNarrowCallback)parserZ repolimitrrr set_argparserNs$ zRepoListCommand.set_argparsercCs |jjs|jjtjtjddS)N)stdoutstderr)optsquietr*Zredirect_loggerloggingZWARNINGINFO)selfrrr pre_configure_szRepoListCommand.pre_configurecCsT|jjs|j|jj}|jjjs0|jjdkrpz'RepoListCommand.run..r)keyZgreenZboldZredZnormalrzNo repositories availabler3r=)rYrYrYTr:r0r9FzRepo-id : zRepo-name : zRepo-status : zRepo-revision : zRepo-tags : z, cSsi|]\}}||qSrr)rTkvrrr rWz'RepoListCommand.run..zRepo-distro-tags : z[%s]: %sr"r$zRepo-updated : zRepo-pkgs : zRepo-available-pkgs: zRepo-size : zRepo-metalink : z Updated : zRepo-mirrors : zRepo-baseurl : z %s (%d more)zRepo-expire : zRepo-exclude : zRepo-include : zRepo-excluded : zRepo-filename :  z zrepo idstatusz repo namez%s %sz%s %s %szTotal packages: {})=rGrRr;rNrOrPlistvaluessortoperator attrgetteroutputtermZFG_COLORZMODEloggerZwarningrlenr!r9rQrr.r+rrappendrmetadataZ fmtKeyValFillrZ getRevisionZgetContentTagsjoinsortedZ getDistroTagsitemsr%r&r'r(rr r rZgetMaxTimestampZmetalinkrZ mirrorlistZbaseurlZ getMirrorsrZ excludepkgsZ includepkgsZrepofilemapprintcolumnsrr)-rKargZextcmdsrPr;rgZ on_ehibegZ on_dhibegZon_hiendZtot_numZcolsZinclude_statusZrepoinfo_outputrZehibegZdhibegZhiendZ ui_enabledZ ui_endis_widZui_excludes_numr9Zui_sizerrouttagsZdistroTagsDictZdistrorZ num_availableZui_numZui_num_availabletsZbaseurlsZmirrorsurlZexpireZid_lenZnm_lenZst_lenZrnameleftZtxt_ridZtxt_rnammsgrrrrunnsP                           zRepoListCommand.runN) __name__ __module__ __qualname____doc__aliasesrZsummary staticmethodrDrLrSryrrrrr/Fs  r/)Z __future__rrZdnf.clirZdnf.i18nrrrrZdnf.cli.option_parserr Zdnf.cli.formatr Z dnf.pycompZdnf.utilrr&rIrdZ getLoggerrhrrr!r.ZCommandr/rrrrs"