<!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`z2                 @   s   d dl mZ d dl mZ d dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlZd dl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dd	 Zd
d Zdd Zdd ZG dd dejZdS )    )absolute_import)unicode_literals)commands)_ucdfill_exact_widthexact_width)OptionParserNdnfc             C   sd   |rt jj| jj ntd}| jdkr4td| S | jsFtd| S t| j}td||f S d S )Nunknown   zNever (last: %s)zInstant (last: %s)z%s second(s) (last: %s))r
   utilnormalize_time_repogetTimestampr   Zmetadata_expire_num2ui_num)repomdZlastnum r   /usr/lib/python3.6/repolist.py_expire_str%   s    

r   c             C   s   t tjjd| dS )Nz%dT)r   r
   Zpycompformat)r   r   r   r   r   0   s    r   c             C   sF   | j j }| jj }x,|D ]$}tj||r.dS tj||rdS qW dS )NTF)idlowernamefnmatch)r   ZpatternsridZrnmZpatr   r   r   _repo_match4   s    


r   c             C   s>   d}x*| j tjdj|jdD ]}||j7 }qW tjjj	|S )Nr   )flags)reponame__eq)
queryhawkeyIGNORE_EXCLUDESfiltermr   Z_sizer
   clir   Zformat_number)sackr   retZpkgr   r   r   
_repo_size?   s    r)   c               @   s@   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S )RepoListCommandzVA class containing methods needed by the cli to execute the
    repolist command.
    repolistrepoinfoz,display the configured software repositoriesc          	   C   sz   | j  }|jddddd tdd |jddddtd	d
 |jddddtdd
 | jdddddddgtjtdd d S )Nz--all_repos_actionstore_constallzshow all repos)destactionconstdefaulthelpz	--enabledenabledzshow enabled repos (default))r0   r1   r2   r4   z
--disableddisabledzshow disabled reposrepos*zenabled-defaultZ
REPOSITORYzRepository specification)nargsr3   metavarchoicesr1   r4   )Zadd_mutually_exclusive_groupadd_argumentr   r	   ZPkgNarrowCallback)parserZ	repolimitr   r   r   set_argparserN   s    zRepoListCommand.set_argparserc             C   s    | j js| jjtjtjd d S )N)stdoutstderr)optsquietr&   Zredirect_loggerloggingZWARNINGINFO)selfr   r   r   pre_configure_   s    zRepoListCommand.pre_configurec             C   sT   | j js| jj  | jj}| jjjs0| j jdkr<d|_	d|_
| j jrP| j j| j _d S )Nr,   T)rA   rB   r&   Zredirect_repo_progressdemandsbaseconfverbosecommandZavailable_reposZsack_activationr-   repos_action)rE   rG   r   r   r   	configurec   s    
zRepoListCommand.configurec       -   
   C   sl  | j j}dd | j jD }| jjj}t| jjj }|jt	j
dd | jj}|jd |jd  }|jd }|jd }d	}	g }
|stjtd
 d S |dkp|dko|}g }x|D ]}t|rt|| rqd7\}}}d}d	}d}| r|||  }}}|jrnd}|dkrq|s.|s.| j jdkrJ|td | }ttd}|s^| j jdkrt| jj|}n<d}|dks|dkr| rq|td | }ttd}|p| j jdkst|j}|
j||j||ff q|r|j}nd }| jjtd|j| jjtd|jg}|r8|| jjtd|g7 }|rh|jj  rh|| jjtd|jj  g7 }|r|jj! r|jj! }|| jjtddj"t#|g7 }|r|jj$ rdd |jj$ D }x@|j% D ]4\}}|| jjtdd|dj"t#|f g7 }qW |rt| jjj&t'j(dj)|jd}t| jjj& j)|jd}t*|}t*|}|	|7 }	|| jjtdt+j,j-|jj. | jjtd || jjtd!|| jjtd"|g7 }|j/r|| jjtd#|j/g7 }|r2|jj0 } || jjtd$t+j,j-| g7 }n"|j1r2|| jjtd%|j1g7 }|j2}!|!r^|| jjtd&dj"|!g7 }nF|r|jj3 }"|"rd'|"d	 t|"d( f }#|| jjtd&|#g7 }t4||}$|| jjtd)|$g7 }|j5r|| jjtd*dj"|j5g7 }|j6r|| jjtd+dj"|j6g7 }|r4|| jjtd,|g7 }|j7rV|| jjtd-|j7g7 }|jd.j"t8t| qW |rt9d/j"| | r:|
r:ttd0}%d	}&d	}'xR|
D ]J\}}(\}}|%t|k rt|}%|&t|(k rt|(}&|'|k r|}'qW |rBttd1|'kr.|j:|%ttd1 d2  })n|j:|%|' d2  })n|j:|%d(  })|)|&k r`|)}&n$|)|&8 })|%|)d2 7 }%|&|)|)d2  7 }&t;td0|%}*|rt;td3|&|&}+ntd3}+|st9d4|*|+f  nt9d5|*|+td1f  xX|
D ]P\}}(\}}|st9d4t;||%|(f  qt9d5t;||%t;|(|&|&|f  qW |sN| j jdkrhtd6},t9|,j<t*|	 d S )8Nc             S   s   g | ]}|j  qS r   )r   ).0xr   r   r   
<listcomp>p   s    z'RepoListCommand.run.<locals>.<listcomp>r   )keyZgreenZboldZredZnormalr   zNo repositories availabler/   zenabled-default Tr6   r,   r5   FzRepo-id            : zRepo-name          : zRepo-status        : zRepo-revision      : zRepo-tags          : z, c             S   s   i | ]\}}||qS r   r   )rN   kvr   r   r   
<dictcomp>   s    z'RepoListCommand.run.<locals>.<dictcomp>zRepo-distro-tags      : z[%s]: %s)r    )r!   zRepo-updated       : zRepo-pkgs          : zRepo-available-pkgs: zRepo-size          : zRepo-metalink      : z  Updated          : zRepo-mirrors       : zRepo-baseurl       : z%s (%d more)r   zRepo-expire        : zRepo-exclude       : zRepo-include       : zRepo-excluded      : zRepo-filename      : 
z

zrepo idZstatus   z	repo namez%s %sz%s %s %szTotal packages: {})rR   rR   rR   )=rA   rL   r7   rH   rI   rJ   listvaluessortoperator
attrgetteroutputtermZFG_COLORZMODEloggerZwarningr   lenr   r5   rK   r   r)   r'   r   r   appendr   ZmetadataZfmtKeyValFillr   ZgetRevisionZgetContentTagsjoinsortedZgetDistroTagsitemsr"   r#   r$   r%   r   r
   r   r   ZgetMaxTimestampZmetalinkr   Z
mirrorlistZbaseurlZ
getMirrorsr   ZexcludepkgsZincludepkgsZrepofilemapprintcolumnsr   r   )-rE   argZextcmdsrJ   r7   r^   Z	on_ehibegZ	on_dhibegZon_hiendZtot_numZcolsZinclude_statusZrepoinfo_outputr   ZehibegZdhibegZhiendZ
ui_enabledZui_endis_widZui_excludes_numr5   Zui_sizer   r   outZtagsZdistroTagsDictZdistror   Znum_availableZui_numZui_num_availableZtsZbaseurlsZmirrorsZurlZexpireZid_lenZnm_lenZst_lenZrnameleftZtxt_ridZtxt_rnammsgr   r   r   runn   s.   







"







zRepoListCommand.runN)r+   r,   )__name__
__module____qualname____doc__aliasesr   Zsummarystaticmethodr>   rF   rM   rl   r   r   r   r   r*   F   s   r*   )Z
__future__r   r   Zdnf.clir   Zdnf.i18nr   r   r   r   Zdnf.cli.option_parserr	   Zdnf.cli.formatr
   Z
dnf.pycompZdnf.utilr   r#   rC   r[   Z	getLoggerr_   r   r   r   r)   ZCommandr*   r   r   r   r   <module>   s"   
