3 ‰K]tã@s`ddlmZddlmZddlmZddlZddlZddlm Z ddl m Z Gdd„de ƒZ dS) é)Ú convert_path)Úlog)ÚDistutilsOptionErrorN)Úsix)ÚCommandc@s:eZdZdZdZdddgZgZd d „Zdd„Zdd„Z dS)ÚrotatezDelete older distributionsz2delete older distributions, keeping N newest filesúmatch=Úmúpatterns to match (required)ú dist-dir=Údú%directory where the distributions areúkeep=Úkú(number of matching distributions to keepcCsd|_d|_d|_dS)N)ÚmatchÚdist_dirÚkeep)Úself©rú/usr/lib/python3.6/rotate.pyÚinitialize_optionsszrotate.initialize_optionsc Csˆ|jdkrtdƒ‚|jdkr$tdƒ‚yt|jƒ|_Wntk rPtdƒ‚YnXt|jtjƒrxdd„|jjdƒDƒ|_|j dd ƒdS) 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 integercSsg|]}t|jƒƒ‘qSr)rÚstrip)Ú.0Úprrrú +sz+rotate.finalize_options..ú,Zbdistr)rr) rrrÚintÚ ValueErrorÚ isinstancerZ string_typesÚsplitZset_undefined_options)rrrrÚfinalize_optionss  zrotate.finalize_optionscCsÔ|jdƒddlm}x¸|jD]®}|jjƒd|}|tjj|j|ƒƒ}dd„|Dƒ}|j ƒ|j ƒt j dt |ƒ|ƒ||jd…}xD|D]<\}}t j d|ƒ|jsŒtjj|ƒr¾tj|ƒqŒtj|ƒqŒWqWdS) NZegg_infor)ÚglobÚ*cSsg|]}tjj|ƒ|f‘qSr)ÚosÚpathÚgetmtime)rÚfrrrr6szrotate.run..z%d file(s) matching %sz Deleting %s)Z run_commandr"rZ distributionZget_namer$r%ÚjoinrÚsortÚreverserÚinfoÚlenrZdry_runÚisdirÚshutilZrmtreeÚunlink)rr"ÚpatternÚfilesÚtr'rrrÚrun/s       z rotate.runN)rr r )r r r )rrr) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú descriptionZ user_optionsZboolean_optionsrr!r3rrrrr sr) Zdistutils.utilrZ distutilsrZdistutils.errorsrr$r.Zsetuptools.externrZ setuptoolsrrrrrrÚs