HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/honcho/__pycache__/command.cpython-310.pyc
o

we�-�@s�ddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZdd	lmZmZejd
dejd�e�e�Zej�e���Zed
d�ed�D��Z Gdd�de!�Z"d�dd�Z#ej$ddd�Z%e#e%dd�e%j&ddd�Z'de'_(dd�Z)e'j*dd d!�Z+e#e+�d"d#�Z,e'j*d$d%d!�Z-e#e-�e-j.d&d'd(ee/d)d*�e-j.d+d,d-d.e/d/d*�e-j.d0d1d2ej0e1d3d*�e-j.d4d5d6e/d7d8�e-j.d9d:d;e/d<�e-j.d=d>d?d@e/dA�e-j.dBdCdDde/d/d*�e-j.dEdFe2e �3��e/dGdH�e-j.dIdJe/dKd8�dLdM�Z4e'j*dNdOd!�Z5e5j.dPdQdRdS�dTdU�Z6e'j*dVdWd!�Z7e#e7�e7j.dXej8dYdZ�d[d\�Z9e'j*d]d^d!�Z:e#e:�e:j.d0d1d2e1ej0d3d_�e:j.d4d5d`e/d7d8�e:j.dadbdce/ddd8�e:j.dedfdgdZ�dhdi�Z;e'j*djdkd!�Z<e)e,e4e6e9e;dl�Z=d�dmdn�Z>dodp�Z?dqdr�Z@dsdt�ZAdudv�ZBdwdx�ZCdydz�ZDd{d|�ZEd}d~�ZFdd��ZGd�d��ZHed�k�r�e>�dSdS)��N)�OrderedDict)�defaultdict)�iter_entry_points)�__version__)�Popen)�Manager)�Printer)�compat�environz5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz%Y-%m-%d %H:%M:%S)�format�datefmt�levelccs�|]}|j|fVqdS�N)�name)�.0�_export�r�G/home/arjun/projects/env/lib/python3.10/site-packages/honcho/command.py�	<genexpr>s��r�honcho_exportersc@seZdZdS)�CommandErrorN)�__name__�
__module__�__qualname__rrrrrsrFcCs�|rdntj}|jdd|pddd�|jddd|pd	d
d�|jdd
|dd�|jdd
|dd�|jddd|dd�|jddddtd�dS)Nz-ez--envz.envz'environment file[,file] (default: .env))�default�helpz-dz
--app-root�DIR�.zprocfile directory (default: .))�metavarrrz--no-colour�
store_truezdisable coloured output)�actionrrz--no-prefixzdisable logging prefixz-fz
--procfile�FILEz!procfile path (default: Procfile)z-vz	--version�versionz	%(prog)s )r r")�argparse�SUPPRESS�add_argumentr)�parser�
with_defaults�suppressrrr�_add_common_args"s:�����
�r)�honchoz"Manage Procfile-based applications)�descriptionT)r'�tasks�command)�title�destcCs0tt|jt|���}t�d�d�|j���dS)NzValid procfile detected ({0})z, )	�	_procfile�_procfile_path�app_root�_choose_procfile�log�infor�join�	processes)�args�procfilerrr�
command_checkEsr:�checkzvalidate a Procfile)rcCs|jdkr|j�d|j�|_t|jt|��}t|�}t|j|j�}t	|j
�}t||�}tj
|j|||d�}t|j��}||jd�}|jtj�|j�|j|j|jpS|jd�}	t|j�|�||	�D] }
tj�|j|
j�}t�d|�t||
j�|
j r�t�!|d�qadS)N�/var/log/APP�APP)�concurrency�env�port)�template_dir)�appr2r4�shell�userzWriting '%s'i�)"r4�replacerBr1r2r3r0�	_read_envr?�_parse_concurrencyr>�_choose_portr
�expand_processesr7�export_choicesr�loadrA�os�path�abspathrCrD�_mkdir�location�renderr6rr5�_write_file�content�
executable�chmod)r8�
procfile_pathr9r?r>r@r7�export_ctor�export�context�frMrrr�command_exportQs:


�
�
��r[rXz#export a Procfile to another formatz-az--appzalternative app namer=)rr�typerz-lz--logz"directory to place process logs inr<rz-pz--portz$starting port number (default: 5000)�Nz-cz
--concurrencyz#number of each process type to run.zprocess=num,process=num)rr\rz-uz--userz"user the application should run as)rr\z-sz--shellz)the shell that should run the applicationz/bin/sh)rrr\z-tz--template-dirz(directory to search for custom templatesrz'format to export to; one of %(choices)s�FORMAT)r�choicesr\rrPzfolder to export to�LOCATIONcCs,dg}|jr|�|j�t�|ddd��S)Nz--help���)�task�appendr&�
parse_args)r8�argvrrr�command_help�srfrz-describe available tasks or one specific taskrbztask to show help for�?)r�nargscCs�tj�t|j|j��|j}|r|ddkr|dd�}tjr"|}n
d�	dd�|D��}t
|tjtj
dd�}t�tjtj�|��t�|j�dS)	Nrz--�� css�|]}t�|�VqdSr)�shlex�quote)r�argrrrr�s�zcommand_run.<locals>.<genexpr>F)�stdout�stderr�start_new_session)rLr
�updaterFr2r?rer	�
ON_WINDOWSr6r�sysrnro�signal�SIGINT�SIG_IGN�wait�exit�
returncode)r8re�cmd�prrr�command_run�s�r|�runz2run a command using your application's environmentrezcommand to run)rhrc	Cst|jt|��}t|�}t|j�}t|j|j�}t|j	�}t
||�}|jrFt�}|jD]}z	|j|||<Wq+t
yDtd�|���wn|j}tttj|j|jd��}	tj|||||d�D]}
tj��}|�|
j�|	j|
j|
j|
j	|d�qa|	��t�|	j �dS)Nz-Process type '{0}' does not exist in Procfile)�colour�prefix)r>r?�quietr@)r�r?)!r1r2r3r0rGr>rFr?�_parse_quietr�rHr7r�KeyErrorrrrrrsrn�	no_colour�	no_prefixr
rIrL�copyrq�add_processrrz�looprxry)r8rVr9r>r?r�r@r7r�managerr{�errr�
command_start�s>



���
�
r��startz-start the application (or a specific PROCESS))rr\rrz'the number of each process type to run.z-qz--quietz*process names for which to suppress outputzprocess1,process2,process3r7�*z-process(es) to start (default: all processes)cCstdjtjtd��dS)Nz{prog} {version})�progr")�printrr&r�r)r8rrr�command_versions�r�r"zdisplay honcho version)r;rXrr}r�r"c
Csv|dur
t�|�}nt��}z
t�t|j|�WdSty:}zt�t|��t	�
d�WYd}~dSd}~ww�Nri)r&rd�_check_output_encoding�COMMANDSr-rr4�error�strrsrx)rer8r�rrr�mains��r�cCstj�||�Sr)rLrMr6)r2r9rrrr1)sr1c
Cs�zt|��}|��}Wd�n1swYWnty%td��wzt�|�}W|Sty@}ztt|���d}~ww)Nz(Procfile does not exist or is not a file)�open�read�IOErrorrr
�parse_procfile�AssertionErrorr�)�filenamerZrSr9r�rrrr0-s

������r0c	Cs�dd�|�d�D�}g}|D]-}z"ttj�||���}|�|���Wd�n1s,wYWqty;Yqwt�	d�|��S)NcSsg|]}|���qSr)�strip)rr�rrr�
<listcomp>=sz_read_env.<locals>.<listcomp>�,�
)
�splitr�rLrMr6rcr�r�r
�parse)r2r?�filesrS�envfilerZrrrrF<s���rFcCsHtdd��}|dur|S|�d�D]}|�dd�\}}t|�||<q|S)NcSsdSr�rrrrr�<lambda>Jsz$_parse_concurrency.<locals>.<lambda>r��=ri)rr��int)�desc�result�item�keyr>rrrrGIsrGcCsg}|dur|S|�d�}|S)Nr�)r�)r�r�rrrr�Ss

r�cCsDt|j|j�}|�dd�}t|d�r|jdur|jS|dur |SdS)N�PROCFILEr9�Procfile)rFr2r?�pop�hasattrr9)r8r?�env_procfilerrrr3[sr3cCsN|�dd�}tj�dd�}t|d�r|jS|durt|�S|dur%t|�SdS)N�PORTr@i�)r�rLr
r�r@r�)r8r?�env_port�os_env_portrrrrHgs
rHc
CsLtj�|�rdSzt�|�WdSty%}z	t�d�t|��d}~ww)Nz!Could not create export directory)rLrM�exists�makedirs�OSErrorr4r�r)rMr�rrrrOus
��rOc
Cszttj�|��zt|d��}|�|�Wd�WdS1s wYWdSty<}z	t�d�t	|��d}~ww)N�wzCould not write to export file)
rOrLrM�dirnamer��writer�r4r�r)rMrS�fpr�rrrrRs&�
��rRcCsLtjjdu}t�d�}tj��sdS|st�tjj�|kr$t�d�dSdS)N�utf8z�Your terminal is not configured to receive UTF-8 encoded text. Please adjust your locale settings or force UTF-8 output by setting PYTHONIOENCODING="utf-8".)rsrn�encoding�codecs�lookup�isattyr4�warn)�no_encodingr�rrrr��s

�r��__main__)Fr)Ir#r��loggingrLrkrsrt�collectionsrr�
pkg_resourcesrr*r�honcho.processr�honcho.managerr�honcho.printerrr	r
�basicConfig�INFO�	getLoggerrr4rM�basename�getcwd�BASENAME�dictrJ�	Exceptionrr)�ArgumentParserr&�add_subparsers�
subparsers�requiredr:�
add_parser�parser_checkr[�
parser_exportr%r�r$r��sorted�keysrf�parser_helpr|�
parser_run�	REMAINDERr��parser_startr��parser_versionr�r�r1r0rFrGr�r3rHrOrRr�rrrr�<module>s<�
�
��$��������
�����$�������







�