B
    XM\:                 @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlZd dlZejdZdd Zdd Zdd	 Zd
d ZdddZdd ZdS )    N)basenamedirnameisdirjoinisfilewinc             C   s   t | st|  d S )N)r   osmakedirs)r    r
   8lib/python3.7/site-packages/conda_build/noarch_python.py
_force_dir   s    r   c             C   s   t d|   d S )Nz[noarch_python] %s)sysexit)Zexit_messager
   r
   r   _error_exit   s    r   c       	   	   C   s   t |trdnd| }tj|t d4}y| }W n  tk
rT   td|   Y nX W dQ R X t	
|j}t	| tr| dr| dd } t |d}t| t || }t|d	}|| W dQ R X t	|| | S )
zTake a file from the bin directory and rewrite it into the python-scripts
    directory with the same permissions after it passes some sanity checks for
    noarch pacakgesScriptsbin)encodingz)Noarch package contains binary script: %sNz
-script.pyizpython-scriptsw)r   ISWINioopenlocaleZgetpreferredencodingreadUnicodeDecodeErrorr   r   statst_modeunlinkendswithr   writechmod)	fnprefixsrcfidataZsrc_modedst_dirdstfor
   r
   r   rewrite_script   s"    


r(   c       
      C   sF  t || }| dr"t| n | drnttj || dd d sbt| dd |d krnt| nd| krt |d}t| | | dd }t ||}t	|}t| t
|| |d |dd  nj| d	rt|}t||}|d | n<| d
r*|d | dd  ntt}	|	d|   dS )z=Process a file for inclusion in a noarch python package.
    )z	.egg-infoz.pycz.pyoz.exeNz
-script.pyzpython-scriptszsite-packages   )zbin/r   )z	Examples/z	Examples\Examples	   z7Don't know how to handle file: %s.  Including it as-is.)r   r   r   r   r   pathr   r   findr   shutilZmoveappend
startswithr(   loggingZ	getLogger__name__debug)
fdr!   r-   Znspgr&   r%   r    logr
   r
   r   handle_file3   s.    

(



r9   c             C   s   |   g g g d}x|D ]}t||| qW trpx>|d |d fD ]*}x$t|D ]\}}|dd||< qPW qBW |rx,|D ]$}	t||	}
tj|
rzt	|
 qzW |S )N)distzsite-packageszpython-scriptsr+   zsite-packagesr+   \/)
r:   r9   r   	enumeratereplacer   r   r-   r   r   )mfilesr!   Zentry_point_scriptsr6   r5   Zfnsir    Zentry_pointr"   r
   r
   r   populate_files\   s     


rB   c          	   C   sH  t |d}t| t |d}t| |  }tt |d| d}|dd W d Q R X tt |d| d}|dd	d
d W d Q R X t| ||}tt	}|d rx$dD ]}	t
t ||	t ||	 qW tt |d}
|
 }W d Q R X tt |dd6}|d tj||ddd |d || W d Q R X d S )Nr   r   z.%s-pre-link.shwbz?    #!/bin/bash
    $PREFIX/bin/python $SOURCE_DIR/link.py
    zutf-8z.%s-pre-link.batzC    @echo off
    "%PREFIX%\python.exe" "%SOURCE_DIR%\link.py"
    
z
zpython-scripts)z
cli-32.exez
cli-64.exez_link.pyzlink.pyr   zDATA =    T)indentZ	sort_keysz
## END DATA

)r   r   namer   r   encoder>   rB   r   __file__r/   Zcopyfiler   jsondump)r?   r@   r!   Zbin_dirZscripts_dirrG   r'   r6   Zthis_dirr    r#   Z	link_coder
   r
   r   	transformu   s.    




rL   )N)r   rJ   r   r2   r   os.pathr   r   r   r   r   r/   r   platformr1   r   r   r   r(   r9   rB   rL   r
   r
   r
   r   <module>   s   )
