Mini Shell
a
�DOgo � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZg d�ZdZej �
d�rVdZne�� ZG dd� de
�Ze jdd � �Zd
d� Zddd
�Zddd�Zdd� Zddd�Zedkr�e� dS )� N)�ZipAppError�create_archive�get_interpreterz8# -*- coding: utf-8 -*-
import {module}
{module}.{fn}()
�win�utf-8c @ s e Zd ZdS )r N)�__name__�
__module__�__qualname__� r
r
�/usr/lib64/python3.9/zipapp.pyr ! s r c c sL t | ttjf�rBt| |��}|V W d � qH1 s60 Y n| V d S �N)�
isinstance�str�os�PathLike�open)�archive�mode�fr
r
r �_maybe_open% s &r c C s$ |r d|� t� d }| �|� dS )zWrite a shebang line.� #!�
N)�encode�shebang_encoding�write)r �interpreterZshebangr
r
r �_write_file_prefix. s r c C s� t | d��x}|�d�}|dkr*d}|�� t |d��0}t||� |�|� t�||� W d � n1 sj0 Y W d � n1 s�0 Y |r�t|t�r�t �
|t �|�jtj
B � dS )z8Copy an application archive, modifying the shebang line.�rb� r � �wbN)r �read�readliner r �shutil�copyfileobjr
r r �chmod�stat�st_mode�S_IEXEC)r Znew_archiver �srcZfirst_2�dstr
r
r �
_copy_archive5 s
Hr+ Fc C s d}t | d�rt | d�rd}nt�| �} | �� r4d}|rHt| ||� dS | �� sXtd��| d �� }|rt|rttd��|s�|s�td ��d}|r�|�d
�\} }
}tdd� | � d
�D ��}tdd� |� d
�D ��}
|
d
kr�|r�|
s�td| ��t
j| |d�}|du �r| �d�}nt |d��s"t�|�}t
|d���}t||� |�rDtjntj}tj|d|d��h}| �d�D ]4}|�| �}|du �s�||��rf|�||�� � �qf|�r�|�d|�d�� W d � n1 �s�0 Y W d � n1 �s�0 Y |�rt |d��s|�|�� jtjB � dS )ab Create an application archive from SOURCE.
The SOURCE can be the name of a directory, or a filename or a file-like
object referring to an existing archive.
The content of SOURCE is packed into an application archive in TARGET,
which can be a filename or a file-like object. If SOURCE is a directory,
TARGET can be omitted and will default to the name of SOURCE with .pyz
appended.
The created application archive will have a shebang line specifying
that it should run with INTERPRETER (there will be no shebang line if
INTERPRETER is None), and a __main__.py which runs MAIN (if MAIN is
not specified, an existing __main__.py will be used). It is an error
to specify MAIN for anything other than a directory source with no
__main__.py, and it is an error to omit MAIN if the directory has no
__main__.py.
Fr! r"