3 ft`z2@sddlmZddlmZddlmZddlmZmZmZm Z ddl m Z ddl Z ddlZ ddlZ ddlZddlZddlZddlZejdZdd Zd d Zd d ZddZGdddejZdS))absolute_import)unicode_literals)commands)_ucdfill_exact_width exact_width) OptionParserNdnfcCsd|rtjj|jjntd}|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)repomdZlastnumr/usr/lib/python3.6/repolist.py _expire_str%s    rcCsttjjd|dS)Nz%dT)rr Zpycompformat)rrrrr0srcCsF|jj}|jj}x,|D]$}tj||r.dStj||rdSqWdS)NTF)idlowernamefnmatch)rZpatternsridZrnmZpatrrr _repo_match4s     rcCs>d}x*|jtjdj|jdD]}||j7}qWtjjj |S)Nr)flags) reponame__eq) queryhawkeyIGNORE_EXCLUDESfiltermrZ_sizer clirZ format_number)sackrretZpkgrrr _repo_size?sr)c@s@eZdZdZdZedZeddZddZ d d Z d d Z d S)RepoListCommandzVA class containing methods needed by the cli to execute the repolist command. repolistrepoinfoz,display the configured software repositoriesc Csz|j}|jdddddtdd|jddddtd d |jd ddd td d |jddddddd gtjtdddS)Nz--all _repos_action store_constallzshow all repos)destactionconstdefaulthelpz --enabledenabledzshow enabled repos (default))r0r1r2r4z --disableddisabledzshow disabled reposrepos*zenabled-defaultZ REPOSITORYzRepository specification)nargsr3metavarchoicesr1r4)Zadd_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|jj|jj}|jjjs0|jjdkrpsz'RepoListCommand.run..r)keyZgreenZboldZredZnormalrzNo repositories availabler/zenabled-defaultTr6r,r5FzRepo-id : zRepo-name : zRepo-status : zRepo-revision : zRepo-tags : z, cSsi|]\}}||qSrr)rNkvrrr sz'RepoListCommand.run..zRepo-distro-tags : z[%s]: %s)r )r!zRepo-updated : zRepo-pkgs : zRepo-available-pkgs: zRepo-size : zRepo-metalink : z Updated : zRepo-mirrors : zRepo-baseurl : z %s (%d more)r zRepo-expire : zRepo-exclude : zRepo-include : zRepo-excluded : zRepo-filename :  z zrepo idZstatusz repo namez%s %sz%s %s %szTotal packages: {})rRrRrR)=rArLr7rHrIrJlistvaluessortoperator attrgetteroutputtermZFG_COLORZMODEloggerZwarningrlenrr5rKrr)r'rrappendrZmetadataZ fmtKeyValFillrZ getRevisionZgetContentTagsjoinsortedZ getDistroTagsitemsr"r#r$r%rr rrZgetMaxTimestampZmetalinkrZ mirrorlistZbaseurlZ getMirrorsrZ excludepkgsZ includepkgsZrepofilemapprintcolumnsrr)-rEargZextcmdsrJr7r^Z on_ehibegZ on_dhibegZon_hiendZtot_numZcolsZinclude_statusZrepoinfo_outputrZehibegZdhibegZhiendZ ui_enabledZ ui_endis_widZui_excludes_numr5Zui_sizerroutZtagsZdistroTagsDictZdistrorZ num_availableZui_numZui_num_availableZtsZbaseurlsZmirrorsZurlZexpireZid_lenZnm_lenZst_lenZrnameleftZtxt_ridZtxt_rnammsgrrrrunns.          "               zRepoListCommand.runN)r+r,) __name__ __module__ __qualname____doc__aliasesrZsummary staticmethodr>rFrMrlrrrrr*Fs  r*)Z __future__rrZdnf.clirZdnf.i18nrrrrZdnf.cli.option_parserr Zdnf.cli.formatr Z dnf.pycompZdnf.utilrr#rCr[Z getLoggerr_rrrr)ZCommandr*rrrrs"