
    i                         d Z ddlZddlZddlZddlZddlmZ  ee      j                  j                  Z	e	dz  Z
dZdedefdZdd	edee   fd
Zdd	ededefdZd Zedk(  r e        yy)u  
cleanup-temp.py - workspace/temp/ 폴더 임시 파일 정리 스크립트

사용법:
  python3 memory/cleanup-temp.py          # 기본: 1시간 이상 된 파일 삭제
  python3 memory/cleanup-temp.py --all    # 전체 삭제
  python3 memory/cleanup-temp.py --dry    # 삭제 목록만 출력 (실제 삭제 안 함)
  python3 memory/cleanup-temp.py --age 30 # 30분 이상 된 파일 삭제

⚠️ 이 스크립트는 workspace/temp/ 폴더만 건드립니다.
   프로젝트 코드는 절대 삭제하지 않습니다.
    N)Pathtemp<   filepathreturnc                 j    | j                         j                  }t        j                         |z
  dz  S )u#   파일의 경과 시간(분) 반환r   )statst_mtimetime)r   mtimes     D/home/jay/workspace/.worktrees/task-2116-dev1/memory/cleanup-temp.pyget_file_age_minutesr      s)    MMO$$EIIK%2%%    age_minutesc                     t         j                         sg S g }t         j                  d      D ]5  }|j                         s| t	        |      | k\  s%|j                  |       7 |S )uC   temp 폴더의 파일 목록 반환 (age_minutes 이상 된 것만)*)TEMP_DIRexistsrglobis_filer   append)r   filesfs      r   list_temp_filesr       s\    ??	E^^C   99;"&:1&=&LQ  Lr   dry_runc                    t         j                         st         j                  d       dg ddS t        |       }|sdg ddS g }g }|D ]V  }t	        |j                  t                    }|r|j                  |       5	 |j                          |j                  |       X |sat        t         j                  d	      d
      D ]>  }|j                         st        |j                               r.	 |j                          @ d|t!        |      ||ddS # t        $ r'}|j                  |t	        |      d       Y d}~d}~ww xY w# t        $ r Y w xY w)uz   
    temp 폴더 정리
    - age_minutes=None 이면 전체 삭제
    - dry_run=True 이면 삭제 목록만 출력
    T)parentsoku   temp 폴더가 비어있음)statusdeletedmessageu   삭제할 파일 없음)fileerrorNr   )reverseu1   workspace/temp/ 외 파일은 건드리지 않음)r   r   deleted_countr    errors	protected)r   r   mkdirr   strrelative_toWORKSPACE_ROOTr   unlink	Exceptionsortedr   is_diranyiterdirrmdirlen)	r   r   targetsr    r&   r   rel_patheds	            r   cleanupr8   -   sF    ??t$2:WXXk*G2:STTGF 	Cq}}^45NN8$C
x(	C s+T: 	Axxz#aiik"2GGI	 WH   Cx#a&ABBC ! s*    !D4E	E!EE	EEc                     t         j                  dd  } d| v }d| v }|rd nt        }d| v r#| j                  d      }	 t	        | |dz            }t        ||      }t        t        j                  |d	d
             y # t
        t        f$ r9 t        t        j                  ddd             t        j                  d       Y vw xY w)N   z--dryz--allz--ager#   u6   --age 뒤에 숫자를 입력하세요 (예: --age 30))r   r!   )r   r   F   )ensure_asciiindent)sysargvDEFAULT_AGE_MINUTESindexfloat
IndexError
ValueErrorprintjsondumpsexitr8   )argsr   
delete_allr   idxresults         r   mainrM   ]   s    88AB<DoGDJ$$*=K$jj!	S1W.K
 g>F	$**V%
:; J' 	$**<tuvwHHQK	s   A< <ACC__main__)N)NF)__doc__rF   osr>   r   pathlibr   __file__parentr+   r   r@   rB   r   listr   booldictr8   rM   __name__ r   r   <module>rY      s     	 
  h&&--F" &4 &E &
 
$t* 
- - - -`<( zF r   