o
     zqfT  ã                   @   s`   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	 d dl
mZ G dd„ deƒZdS )	é    )Úconvert_path)Úlog)ÚDistutilsOptionErrorN)ÚList)ÚCommandc                   @   sF   e Zd ZU dZdZg d¢Zg Zee 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 keepÚboolean_optionsc                 C   s   d | _ d | _d | _d S )N)ÚmatchÚdist_dirÚkeep)Úself© r   úX/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/command/rotate.pyÚinitialize_options   s   
zrotate.initialize_optionsc              
   C   sŒ   | j d u r	tdƒ‚| jd u rtdƒ‚zt| jƒ| _W n ty+ } ztdƒ|‚d }~ww 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>ú,Úbdist)r   r   )	r   r   r   ÚintÚ
ValueErrorÚ
isinstanceÚstrÚsplitÚset_undefined_options)r   Úer   r   r   Úfinalize_options   s   
ÿ

€ÿzrotate.finalize_optionsc                 C   sÌ   |   d¡ ddlm} | jD ]U}| j ¡ d | }|tj | j|¡ƒ}dd„ |D ƒ}| 	¡  | 
¡  t dt|ƒ|¡ || jd … }|D ]\}}t d|¡ | jsbtj |¡r]t |¡ qDt |¡ qDqd S )	NÚegg_infor   )ÚglobÚ*c                 S   s   g | ]
}t j |¡|f‘qS r   )ÚosÚpathÚgetmtime)r   Úfr   r   r   r   3   s    zrotate.run.<locals>.<listcomp>z%d file(s) matching %szDeleting %s)Úrun_commandr"   r   ÚdistributionÚget_namer$   r%   Újoinr   ÚsortÚreverser   ÚinfoÚlenr   Údry_runÚisdirÚshutilÚrmtreeÚunlink)r   r"   ÚpatternÚfilesÚtr'   r   r   r   Úrun,   s&   


€ú÷z
rotate.runN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚdescriptionÚuser_optionsr   r   r   Ú__annotations__r   r    r8   r   r   r   r   r      s   
 r   )Údistutils.utilr   Ú	distutilsr   Údistutils.errorsr   r$   r2   Útypingr   Ú
setuptoolsr   r   r   r   r   r   Ú<module>   s    