U
    <1_                     @   sH   d Z ddlZddlmZ ddlT ddlmZ dd ZG dd	 d	eZdS )
zidistutils.command.bdist

Implements the Distutils 'bdist' command (create a built [binary]
distribution).    N)Command)*)get_platformc                  C   sP   ddl m}  g }tjD ]"}|d| dtj| d f q| |}|d dS )zFPrint list of available formats (arguments to "--format" option).
    r   )FancyGetoptformats=N   z'List of available distribution formats:)Zdistutils.fancy_getoptr   bdistformat_commandsappendformat_commandZ
print_help)r   formatsformatZpretty_printer r   -/usr/lib/python3.8/distutils/command/bdist.pyshow_formats   s    
r   c                
   @   s   e Zd ZdZdddde  fdddd	d
gZdgZdddefgZdZ	dddZ
dddddddddg	Zddddddd d!d"d#	Zd$d% Zd&d' Zd(d) ZdS )*r   z$create a built (binary) distribution)zbdist-base=bz4temporary directory for creating built distributionsz
plat-name=pz;platform name to embed in generated filenames (default: %s))r   Nz/formats for distribution (comma-separated list))z	dist-dir=dz=directory to put final built distributions in [default: dist])
skip-buildNz2skip rebuilding everything (for testing/debugging))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r   zhelp-formatsNz$lists available distribution formats)	bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsi)r   zRPM distribution)
bdist_dumbzgzip'ed tar file)r#   zbzip2'ed tar file)r#   zxz'ed tar file)r#   zcompressed tar file)r#   ztar file)Zbdist_wininstzWindows executable installer)r#   zZIP file)Z	bdist_msizMicrosoft Installer)	r   r   r   r   r   r    r!   r   r"   c                 C   s.   d | _ d | _d | _d | _d| _d | _d | _d S )Nr   )
bdist_base	plat_namer   dist_dir
skip_buildgroupowner)selfr   r   r   initialize_optionsQ   s    zbdist.initialize_optionsc                 C   s   | j d kr(| jrt | _ n| dj | _ | jd krT| dj}tj|d| j  | _| 	d | j
d krz| jtj g| _
W n" tk
r   tdtj Y nX | jd krd| _d S )NZbuildzbdist.r   z;don't know how to create built distributions on platform %sZdist)r%   r'   r   Zget_finalized_commandr$   
build_baseospathjoinZensure_string_listr   default_formatnameKeyErrorZDistutilsPlatformErrorr&   )r*   r,   r   r   r   finalize_optionsZ   s*    






zbdist.finalize_optionsc              	   C   s   g }| j D ]>}z|| j| d  W q
 tk
rF   td| Y q
X q
tt| j D ]h}|| }| |}|| jkr| j | |_	|dkr| j
|_
| j|_|||d d  krd|_| | qXd S )Nr   zinvalid format '%s'r#   r   )r   r
   r   r2   ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr   r)   r(   Z	keep_tempZrun_command)r*   Zcommandsr   iZcmd_nameZsub_cmdr   r   r   runv   s"    


z	bdist.run)__name__
__module____qualname__Zdescriptionr   Zuser_optionsZboolean_optionsr   Zhelp_optionsr6   r0   r	   r   r+   r3   r8   r   r   r   r   r      sR      	r   )	__doc__r-   Zdistutils.corer   Zdistutils.errorsZdistutils.utilr   r   r   r   r   r   r   <module>   s   