
    eCiE                     D    d dl Z d dlZd dlZddlmZ  G d d          ZdS )    N   )utilsc                   4    e Zd Zd Zd ZddZd Zd Zd ZdS )		TempFilesc                 b    || _         || _        g | _        t          j        | j                   d S N)tmpdirsave_debug_filesto_cleanatexitregisterclean)selfr	   r
   s      3/b/s/w/ir/x/w/install/emscripten/tools/tempfiles.py__init__zTempFiles.__init__   s0    DK,DDM
ODJ    c                 :    | j                             |           d S r   )r   appendr   filenames     r   notezTempFiles.note   s    M"""""r   Nc                 t    t          j        | j        ||d          }|                     |j                   |S )z0Returns a named temp file with the given prefix.F)dirsuffixprefixdelete)tempfileNamedTemporaryFiler	   r   name)r   r   r   
named_files       r   getzTempFiles.get   s9    ,VTZchiiiJIIjor   c                 :      G  fdd          } |            S )a  Returns an object representing a RAII-like access to a temp file
    that has convenient pythonesque semantics for being used via a construct
      'with TempFiles.get_file(..) as filename:'.
    The file will be deleted immediately once the 'with' block is exited.
    c                   &    e Zd Z fdZ fdZdS )*TempFiles.get_file.<locals>.TempFileObjectc                     t          j        j        d          | _        | j                                         | j        j        S )NF)r   r   r   )r   r   r	   filecloser   )self_r   r   s    r   	__enter__z4TempFiles.get_file.<locals>.TempFileObject.__enter__%   s=    0T[X]^^^

zr   c                 V    j         s t          j        | j        j                   d S d S r   )r
   r   delete_filer&   r   )r(   _type_value
_tracebackr   s       r   __exit__z3TempFiles.get_file.<locals>.TempFileObject.__exit__*   s3    $ 	-

EJO
,
,
,
,
,	- 	-r   N)__name__
__module____qualname__r)   r/   )r   r   s   r   TempFileObjectr$   $   sL             
- - - - - - -r   r3    )r   r   r3   s   `` r   get_filezTempFiles.get_file   sK    - - - - - - - - - - - >r   c                 d    t          j        | j                  }|                     |           |S )z5Returns a named temp directory with the given prefix.)r   )r   mkdtempr	   r   )r   	directorys     r   get_dirzTempFiles.get_dir/   s/     T[111IIIir   c                     | j         r%t          d| j         t          j                   d S | j        D ]}t          j        |           g | _        d S )NzAnot cleaning up temp files since in debug-save mode, see them in )r&   )r
   printr	   sysstderrr   r   r+   r   s     r   r   zTempFiles.clean5   sf     ]PTP[]]dgdnoooofM " "!!!!DMMMr   r   )	r0   r1   r2   r   r   r!   r5   r9   r   r4   r   r   r   r      ss             # # #     "      r   r   )r   r<   r    r   r   r4   r   r   <module>r?      sf     



       . . . . . . . . . .r   