File: //opt/alt/python37/lib/python3.7/site-packages/distlib/__pycache__/scripts.cpython-37.opt-1.pyc
B
    :��a8E  �               @   s�   d dl mZ d dlZd dlZd dlZd dlZd dlZddlmZm	Z	m
Z
 ddlmZ ddl
mZmZmZmZmZmZ e�e�Zd�� Ze�d�Zd	Zd
d� ZeZG dd
� d
e�ZdS )�    )�BytesION�   )�	sysconfig�detect_encoding�ZipFile)�finder)�FileOperator�get_export_entry�convert_path�get_executable�get_platform�in_venva�  
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="1.0.0.0"
 processorArchitecture="X86"
 name="%s"
 type="win32"/>
 <!-- Identify the application security requirements. -->
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
 <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
 </requestedPrivileges>
 </security>
 </trustInfo>
</assembly>s   ^#!.*pythonw?[0-9.]*([ 	].*)?$z�# -*- coding: utf-8 -*-
import re
import sys
from %(module)s import %(import_name)s
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(%(func)s())
c             C   sX   d| krT| � d�rB| �dd�\}}d|krT|� d�sTd||f } n| � d�sTd|  } | S )N� z
/usr/bin/env r   �"z%s "%s"z"%s")�
startswith�split)�
executable�envZ_executable� r   �@/opt/alt/python37/lib/python3.7/site-packages/distlib/scripts.py�enquote_executable3   s    
r   c               @   s�   e Zd ZdZeZdZd*dd�Zdd� Ze	j
�d	�rBd
d� Zdd
� Z
dd� Zd+dd�Zdd� ZeZdd� Zdd� ZdZdd� Zd,dd�Zdd� Zed d!� �Zejd"d!� �Zejd#ks�ejd	kr�ejd#kr�d$d%� Zd-d&d'�Z d.d(d)�Z!dS )/�ScriptMakerz_
    A class to copy or create scripts from source scripts or callable
    specifications.
    NTFc             C   s�   || _ || _|| _d| _d| _tjdkp:tjdko:tjdk| _t	d�| _
|pRt|�| _tjdkprtjdkortjdk| _
tj| _d S )NF�posix�java)� zX.Y�nt)�
source_dir�
target_dir�
add_launchers�force�clobber�os�name�_name�set_mode�set�variantsr   �_fileop�_is_nt�sys�version_info)�selfr   r   r   �dry_runZfileopr   r   r   �__init__N   s    
zScriptMaker.__init__c             C   s@   |� dd�r<| jr<tj�|�\}}|�dd�}tj�||�}|S )N�guiF�pythonZpythonw)�getr(   r!   �pathr   �replace�join)r+   r   �optionsZdn�fnr   r   r   �_get_alternate_executable_   s
    z%ScriptMaker._get_alternate_executabler   c          	   C   sL   y"t |��}|�d�dkS Q R X W n$ ttfk
rF   t�d|� dS X dS )zl
            Determine if the specified executable is a script
            (contains a #! line)
            �   z#!NzFailed to open %sF)�open�read�OSError�IOError�logger�warning)r+   r   �fpr   r   r   �	_is_shellg   s    
zScriptMaker._is_shellc             C   sD   | � |�r*dd l}|jj�d�dkr<|S n|�� �d�r<|S d| S )Nr   zos.nameZLinuxz
jython.exez/usr/bin/env %s)r?   r   ZlangZSystemZgetProperty�lower�endswith)r+   r   r   r   r   r   �_fix_jython_executables   s    
z"ScriptMaker._fix_jython_executablec             C   s�   t jdkrd}n8t|�t|� d }tjdkr4d}nd}d|koF||k}|r^d| | d	 }n d
}|d| | d 7 }|d
7 }|S )a  
        Build a shebang line. In the simple case (on Windows, or a shebang line
        which is not too long or contains spaces) use a simple formulation for
        the shebang. Otherwise, use /bin/sh as the executable, with a contrived
        shebang which allows the script to run either under Python or sh, using
        suitable quoting. Thanks to Harald Nordgren for his input.
        See also: http://www.in-ulm.de/~mascheck/various/shebang/#length
                  https://hg.mozilla.org/mozilla-central/file/tip/mach
        r   T�   �darwini   �   �    s   #!�   
s
   #!/bin/sh
s	   '''exec' s    "$0" "$@"
s   ' ''')r!   r"