a
    ze|!                     @   s:  d dl Z d dlmZ d dlZzd dlZW n ey>   dZY n0 d dlmZ d dlm	Z	 d dl
mZ d dlmZ zd dlmZ W n ey   dZY n0 zd dlmZ W n ey   dZY n0 d	d
 Zdd Zd"ddZd#ddZedgdfedgdfedgdfedgdfedgdfeg dfdZdd Zd$d d!ZdS )%    N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc                 C   sL   t d u s| d u rd S zt | }W n ty6   d }Y n0 |d urH|d S d S N   )r   KeyErrornameresult r   ,/usr/lib/python3.9/distutils/archive_util.py_get_gid   s    
r   c                 C   sL   t d u s| d u rd S zt | }W n ty6   d }Y n0 |d urH|d S d S r	   )r   r   r   r   r   r   _get_uid+   s    
r   gzipc                    s6  dddddd}dddd	d
}|d ur:||  vr:td| d }	|dkrZ|	||d7 }	ttj|	|d dd l}
t	d t
t  fdd}|s|
|	d||  }z|j||d W |  n
|  0 |dkr2tdt |	||  }tjdkr||	|g}n
|d|	g}t||d |S |	S )Ngzbz2xz )r   bzip2r   Ncompressz.gzz.bz2z.xzz.Z)r   r   r   r   zKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr   dry_runr   zCreating tar archivec                    s,    d ur | _ | _d ur(| _| _| S N)gidgnameuiduname)tarinfor   groupownerr   r   r   _set_uid_gida   s    z"make_tarball.<locals>._set_uid_gidzw|%s)filterz'compress' will be deprecated.win32z-f)keys
ValueErrorgetr   ospathdirnametarfiler   infor   r   openaddcloser   PendingDeprecationWarningsysplatformr   )	base_namebase_dirr   verboser   r$   r#   tar_compressioncompress_extarchive_namer.   r%   tarZcompressed_namecmdr   r"   r   make_tarball7   sB    
	


r>   c              
   C   s  | d }t tj||d td u rn|r.d}nd}ztd|||g|d W n tyh   td| Y n0 nJtd|| |sztj	|dtj
d	}W n$ ty   tj	|dtjd	}Y n0 | |tjkrtjtj|d
}||| td| t|D ]\}}	}
|	D ]6}tjtj||d
}||| td| q|
D ]B}tjtj||}tj|rP||| td| qPqW d    n1 s0    Y  |S )Nz.zipr   z-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)compressionr   zadding '%s')r   r+   r,   r-   zipfiler   r   r   r/   ZipFileZIP_DEFLATEDRuntimeErrorZ
ZIP_STOREDcurdirnormpathjoinwritewalkisfile)r6   r7   r8   r   zip_filenameZ
zipoptionsr?   r,   dirpathdirnames	filenamesr   r   r   r   make_zipfile   sT    	


4rP   )r   r   zgzip'ed tar-file)r   r   zbzip2'ed tar-file)r   r   zxz'ed tar-file)r   r   zcompressed tar file)r   Nzuncompressed tar filezZIP file)gztarbztarxztarZztarr<   r?   c                 C   s   | D ]}|t vr|  S qd S r   )ARCHIVE_FORMATS)formatsformatr   r   r   check_archive_formats   s    
rW   c              
   C   s  t  }|d ur6td| t j| } |s6t | |d u rDt j}d|i}	zt| }
W n t	yv   t
d| Y n0 |
d }|
d D ]\}}||	|< q|dkr||	d< ||	d< z4|| |fi |	}W |d urtd	| t | n"|d urtd	| t | 0 |S )
Nzchanging into '%s'r   zunknown archive format '%s'r      r?   r$   r#   zchanging back to '%s')r+   getcwdr   debugr,   abspathchdirrF   rT   r   r)   )r6   rV   root_dirr7   r8   r   r$   r#   save_cwdkwargsformat_infofuncargvalfilenamer   r   r   make_archive   s8    


re   )r   r   r   NN)r   r   )NNr   r   NN)r+   warningsr   r4   rB   ImportErrorZdistutils.errorsr   Zdistutils.spawnr   Zdistutils.dir_utilr   Z	distutilsr   pwdr   grpr   r   r   r>   rP   rT   rW   re   r   r   r   r   <module>   sF   


  
H
=




	
  