B
    XM\  ã               @   sè   d 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	ddl
Z
eeƒZee	jƒZe	jdkrleedƒZdZneedƒZde	jdd	…  Zg Zd
Zdd„ Zdd„ Ze	jfdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedkräeƒ  dS )zZ
This is code that is added to noarch Python packages. See
conda_build/noarch_python.py.

é    N)ÚdirnameÚexistsÚisdirÚjoinÚnormpathÚwin32ZScriptszLib/site-packagesÚbinzlib/python%s/site-packagesé   s(   ^(#!(?:[ ]*)(/(?:\\ |[^ \n\r\t])*)(.*))$c          	   C   s:   yt  | |¡ W n$ ttfk
r4   t | |¡ Y nX d S )N)ÚosÚlinkÚOSErrorÚAttributeErrorÚshutilÚcopy2)ÚsrcÚdst© r   ú0lib/python3.7/site-packages/conda_build/_link.pyÚ_link&   s    r   c             C   s(   yt  | ¡ W n tk
r"   Y nX d S )N)r
   Úunlinkr   )Úpathr   r   r   Ú_unlink.   s    r   c             C   sD   |d dkr| d S |   dd¡\}}d||d d… |d |d f S )Nr   é   Úcú/é   z"%s/__pycache__/%s.cpython-%d%d.pycéýÿÿÿ)Úrsplit)ÚfÚversion_infoZdnÚfnr   r   r   Úpyc_f5   s
    r!   c             C   sŒ   x†|D ]~}t t| |ƒ}t t||ƒ}t|ƒ}t|ƒs<t |¡ t|ƒrLt|ƒ t	||ƒ d||f }t
 |¡ | d¡rt
 t|ƒ¡ qW d S )Nz%s/%sz.py)r   ÚTHIS_DIRÚPREFIXr   r   r
   Úmakedirsr   r   r   ÚFILESÚappendÚendswithr!   )Zsrc_rootZdst_rootÚfilesr   r   r   Zdst_dirr   r   r   Ú
link_files=   s    




r)   c             C   sŽ   t | dƒr|  ¡ } t t| tj¡}|rx| ¡ \}}}t|ƒdkrx| d¡ 	d¡d }d|| d¡f }|  
|| d¡¡} t | dƒrŠ|  ¡ } | S )NÚencodeé   zutf-8r   éÿÿÿÿz#!/usr/bin/env %s%sÚdecode)Úhasattrr*   ÚreÚmatchÚSHEBANG_REGEXÚ	MULTILINEÚgroupsÚlenr-   ÚsplitÚreplace)ÚdataZshebang_matchZwhole_shebangÚ
executableZoptionsZexecutable_nameZnew_shebangr   r   r   Úreplace_long_shebangN   s    

r9   c          	   C   sä   t td| ƒ}t t| ƒ}tjdkrnt ||d ¡ t d|  ¡ t t tddt	j
  ƒ|d ¡ t d|  ¡ nrt|ƒ}| ¡ }W d Q R X t|d	ƒ,}td
ttjƒ ƒ}| |¡ | |¡ W d Q R X t |d¡ t d|  ¡ d S )Nzpython-scriptsr   z
-script.pyzScripts/%s-script.pyz
cli-%d.exeé   z.exezScripts/%s.exeÚwz#!%s
iý  zbin/%s)r   r"   ÚBIN_DIRÚsysÚplatformr   r   r%   r&   ÚtupleÚ__itemsize__ÚopenÚreadr9   r   r8   Úwriter
   Úchmod)r    r   r   Zfir7   ÚfoZshebangr   r   r   Úcreate_script^   s"    




rF   c             C   s4   | sd S t tƒst t¡ x| D ]}t|ƒ q W d S )N)r   r<   r
   ÚmkdirrF   )r(   r    r   r   r   Úcreate_scriptss   s    

rH   c           	   C   sr   t td ƒ tdttd ƒ tddtd ƒ tttddtd  ƒdƒ"} xtD ]}|  d| ¡ qNW W d Q R X d S )	Nzpython-scriptszsite-packagesZExamplesz
conda-metaz%s.filesZdistr;   z%s
)	rH   ZDATAr)   ÚSITE_PACKAGESrA   r   r#   r%   rC   )rE   r   r   r   r   Úmain|   s    
rJ   Ú__main__)Ú__doc__r
   Úos.pathr   r   r   r   r   r/   r=   r   Ú__file__r"   Úprefixr#   r>   r<   rI   Úversionr%   r1   r   r   r   r!   r)   r9   rF   rH   rJ   Ú__name__r   r   r   r   Ú<module>   s0   



	