U
    ±§f`  ã                   @  s`   d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
mZ G dd„ deƒZdS )	é    )Úannotations)Úconvert_path)Úlog)ÚDistutilsOptionErrorN)ÚCommandc                   @  sD   e Zd ZU dZdZdddgZg Zded< dd	„ Zd
d„ Z	dd„ Z
dS )ÚrotatezDelete older distributionsz2delete older distributions, keeping N newest files)zmatch=Úmzpatterns to match (required))z	dist-dir=Údz%directory where the distributions are)zkeep=Úkz(number of matching distributions to keepz	list[str]Úboolean_optionsc                 C  s   d | _ d | _d | _d S )N)ÚmatchÚdist_dirÚkeep)Úself© r   ú8lib/python3.8/site-packages/setuptools/command/rotate.pyÚinitialize_options   s    zrotate.initialize_optionsc              
   C  s–   | j d krtdƒ‚| jd kr$tdƒ‚zt| jƒ| _W n, tk
r` } ztdƒ|‚W 5 d }~X Y nX t| j tƒr†dd„ | j  d¡D ƒ| _ |  dd¡ d S )	NzQMust specify one or more (comma-separated) match patterns (e.g. '.zip' or '.egg')z$Must specify number of files to keepz--keep must be an integerc                 S  s   g | ]}t | ¡ ƒ‘qS r   )r   Ústrip)Ú.0Úpr   r   r   Ú
<listcomp>*   s     z+rotate.finalize_options.<locals>.<listcomp>ú,Zbdist)r   r   )	r   r   r   ÚintÚ
ValueErrorÚ
isinstanceÚstrÚsplitZset_undefined_options)r   Úer   r   r   Úfinalize_options   s    
ÿ
zrotate.finalize_optionsc                 C  sÌ   |   d¡ ddlm} | jD ]ª}| j ¡ d | }|tj | j|¡ƒ}dd„ |D ƒ}| 	¡  | 
¡  t dt|ƒ|¡ || jd … }|D ]<\}}t d|¡ | jsˆtj |¡rºt |¡ qˆt |¡ qˆqd S )	NZegg_infor   )ÚglobÚ*c                 S  s   g | ]}t j |¡|f‘qS r   )ÚosÚpathÚgetmtime)r   Úfr   r   r   r   4   s     zrotate.run.<locals>.<listcomp>z%d file(s) matching %szDeleting %s)Zrun_commandr   r   ZdistributionZget_namer!   r"   Újoinr   ÚsortÚreverser   ÚinfoÚlenr   Zdry_runÚisdirÚshutilZrmtreeÚunlink)r   r   ÚpatternÚfilesÚtr$   r   r   r   Úrun-   s     

z
rotate.runN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZdescriptionZuser_optionsr   Ú__annotations__r   r   r0   r   r   r   r   r      s   
ýr   )Z
__future__r   Zdistutils.utilr   Ú	distutilsr   Zdistutils.errorsr   r!   r+   Z
setuptoolsr   r   r   r   r   r   Ú<module>   s   