<!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
fJ)                 @   sz   d dl mZ d dl mZ d dlmZmZ d dlZd dlZd dlZd dl	Z	d dl
Z
G dd dejZG dd dejjZdS )	    )absolute_import)unicode_literals)_loggerNc                   s    e Zd ZdZ fddZ  ZS )
RepoManage
repomanagec                s,   t t| j|| |d krd S |jt d S )N)superr   __init__Zregister_commandRepoManageCommand)selfbasecli)	__class__  /usr/lib/python3.6/repomanage.pyr	   $   s    zRepoManage.__init__)__name__
__module____qualname__namer	   __classcell__r   r   )r   r   r       s   r   c               @   s\   e Zd ZdZedZdd Zdd Zdd Ze	d	d
 Z
e	dd Zdd Ze	dd ZdS )r
   r   z"Manage a directory of rpm packagesc             C   s,   | j j r(| j j r(| jjtjtjd d S )N)stdoutstderr)optsverbosequietr   Zredirect_loggerloggingZWARNINGINFO)r   r   r   r   pre_configure/   s    zRepoManageCommand.pre_configurec             C   s0   | j j r| j j r| jj  | jj}d|_d S )NT)r   r   r   r   Zredirect_repo_progressdemandsZsack_activation)r   r   r   r   r   	configure3   s    
zRepoManageCommand.configurec       "         s@   j jr  j jr tjjtd j jr@ j jr@tjjtd j jr` j jr`tjjtd j j r| j j r|d j _i }i }i }t }t	 j j
}yd} jjj| jj j jgd}|jj   jj| tjjr> jj   jjj }xH|D ]@}	|	j |kr|j|	j  |j|	j i j|	j g j|	 qW W n tjjk
r   g }
 j j jd}
t |
dkrtjjtd	 jj!ddd
  jj"ddd y jj#|
 jj$j%d W n0 t&k
r   t'j(tdj)dj*|
 Y nX Y nX  jj+j,t-j.dj/ }dd |j0|j0|ddj/ D }|j1  x|D ]~}|j2|j3f}||krx||| kr|| j| n
|g||<  j4|}||kr|| j j5| n j5|g||< q@W g }t } j jrxh|j6 D ]\\}}|||f }|| d  }x6|D ].} j4|}x|| D ]}|j| q W qW qW xb|j7 D ]V}t8|j6 }|| d  }x4|D ],}x$|| D ]}|jt|j  q|W qnW qJW  j jr|xh|j6 D ]\\}}|||f }|d |  }x6|D ].} j4|}x|| D ]}|j| qW qW qW xb|j7 D ]V}t8|j6 }|d |  }x4|D ],}x$|| D ]}|jt|j  qTW qFW q"W  j jrxh|j6 D ]\\}}|||f }|d |  }x6|D ].} j4|}x|| D ]}|j| qW qW qW t }xb|j7 D ]V}t8|j6 }|| d  }x4|D ],}x$|| D ]}|jt|j  q2W q$W q W xx|j7 D ]l}t8|j6 }|d |  }xJ|D ]B}x:|| D ].}x&|j D ]} | |kr|j9|  qW qW qW qdW  fdd|j0|j0|ddj/ D }!||! }|j1   j j:r$t;dj*| nx|D ]}t;| q*W d S )Nz%Pass either --old or --new, not both!z)Pass either --oldonly or --new, not both!z)Pass either --old or --oldonly, not both!TZrepomanage_repo)Zbaseurlz.rpmr   zNo files to process)sackreposF)Zload_system_repoZload_available_repos)progresszCould not open {}z, )flagsc             S   s   g | ]}|qS r   r   ).0xr   r   r   
<listcomp>o   s    z)RepoManageCommand.run.<locals>.<listcomp>)Znevra_strict)Zpkg__neqc                s   g | ]} j |qS r   )_package_to_path)r$   r%   )r   r   r   r&      s    )Zpkg__eq )<r   newolddnf
exceptionsErrorr   ZoldonlysetintZkeepr   r!   Zadd_new_repoZconfpathZ_repoZexpireZ_add_repo_to_sackZWITH_MODULESZ_setup_modular_excludesZ_moduleContainerZgetModulePackagesZ	getRepoIDupdateZgetArtifacts
setdefaultZgetNameStreamZgetVersionNumappendZ	RepoError_get_file_listlenresetZ	fill_sackZadd_remote_rpmsoutputr"   IOErrorr   Zwarningformatjoinr    queryhawkeyZIGNORE_MODULAR_EXCLUDESZ	availablefiltersortr   arch_package_to_nevrar'   keysvaluessortedaddZspaceprint)"r   ZverfileZpkgdictZmodule_dictZall_modular_artifactsZkeepnumZREPOMANAGE_REPOIDZ	repo_confZmodule_packagesZmodule_packageZrpm_listr;   ZpackagespkgZnaZnevraZoutputpackagesZkeepnum_latest_stream_artifactsnaZevrlistZnewevrspackageZfpkgZstreams_by_versionZsorted_stream_versionsZnew_sorted_stream_versionsistreamZoldevrsZold_sorted_stream_versionsZkeepnum_newer_stream_artifactsZartifactZmodular_packagesr   )r   r   run9   s    



&"








$



$



$

"&

zRepoManageCommand.runc          	   C   s   | j dddtdd | j dddtdd | j d	d
dtdd | j dddtdd | j ddddtddtd | j ddtdd d S )Nz-oz--old
store_truezPrint the older packages)actionhelpz-Oz	--oldonlyz6Print the older packages. Exclude the newest packages.z-nz--newzPrint the newest packagesz-sz--spacez#Space separated output, not newlinez-kz--keepZstoreZKEEPz)Newest N packages to keep - defaults to 1   )rN   metavarrO   defaulttyper0   zPath to directory)add_argumentr   r/   )parserr   r   r   set_argparser   s    




zRepoManageCommand.set_argparserc             C   s`   g }xVt j| D ]H\}}}x<|D ]4}t jj|d j t|kr |jt jj|| q W qW |S )zJReturn all files in path matching ext

        return list object
        rP   )oswalkr0   splitextlowerstrr3   r:   )r0   ZextZfilelistrootdirsfilesfr   r   r   r4      s    
z RepoManageCommand._get_file_listc             C   s*   t | jjr tjj| jj|jS |jS d S )N)r5   r   r!   rW   r0   r:   r   location)r   rF   r   r   r   r'      s    z"RepoManageCommand._package_to_pathc             C   s   | j | j| j| j| jfS )N)r   Zepochversionreleaser?   )rF   r   r   r   r@      s    z#RepoManageCommand._package_to_nevraN)r   )r   r   r   aliasesr   Zsummaryr   r   rL   staticmethodrV   r4   r'   r@   r   r   r   r   r
   +   s    $r
   )Z
__future__r   r   Zdnfpluginscorer   r   r+   Zdnf.clir   rW   r<   ZPluginr   r   ZCommandr
   r   r   r   r   <module>   s   