o
    ;i:                     @   s  U d dl Z d dlZd dlZ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	 d dl
mZmZmZmZmZmZ e ejddZeee	f ed< dZdZd	Ze Zejed
ddddddde dde ddde ddddiZ edre j!edddZ edrej"edddndZ#e#rd e#ini Z$d!e%eef d"efd#d$Z&ej'e ed%ed&ed'ed(d)e(de )eige$e#rd*ndd+d"efd,d-Z*e+ d.d/ Z,dS )0    N)Any)AppImageQueueSecretVolumeforwardMODAL_LAUNCH_ARGSz{}argsz"https://code-server.dev/install.shzdhttps://raw.githubusercontent.com/coder/code-server/refs/tags/v4.96.1/ci/release-image/entrypoint.shzZhttps://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-$ARCH.tar.gzimagez3.11)
add_pythoncurlz	dumb-initgitzgit-lfszcurl -fsSL z | shz  > /code-server.shzchmod u+x /code-server.shz3ARCH="$(dpkg --print-architecture)" && curl -fsSL "z" | tar -C /usr/local/bin -xzf -  && chown root:root /usr/local/bin/fixuid && chmod 4755 /usr/local/bin/fixuid && mkdir -p /etc/fixuid && echo "user: root" >> /etc/fixuid/config.yml && echo "group: root" >> /etc/fixuid/config.ymlzmkdir /home/coderENTRYPOINTD mountz/home/coder/mount)remote_pathvolumeT)create_if_missingz/home/coder/volumedataqc              
   C   s   t  }	 ztjddd
 	 W d    W n/1 sw   Y  W n$ tyD } zt d t  | dkr:td|W Y d }~nd }~ww q||  d S )NT)	localhost  g      >@)timeoutg{Gz?z3Waited too long for port 8080 to accept connections)time	monotonicsocketcreate_connectionOSErrorsleepTimeoutErrorput)r   r   
start_timeexc r$   M/home/ubuntu/.local/lib/python3.10/site-packages/modal/cli/programs/vscode.pywait_for_port@   s   $

r&   cpumemorygpur   i     )r   r'   r(   r)   r   secretsvolumesmax_containersc                 C   s   t d td}td<}|j}td td|  td| d tjt	||f| fd
  tjg d	i t jd
|dd W d    n1 sMw   Y  | d d S )Nz/home/coder   r   z(
VS Code on Modal, opening in browser...z   -> z   -> password: 
)targetr
   )z/code-server.shz--bind-addrz0.0.0.0:8080.z	/bin/bash)SHELLPASSWORD)envdone)oschdirr+   token_urlsafer   urlprint	threadingThreadr&   start
subprocessrunenvironr!   )r   tokentunnelr9   r$   r$   r%   
run_vscodeM   s   



rC   c                  C   sh   t  &} t|  |  \}}td t| |  dks"J W d    d S 1 s-w   Y  d S )Nr*   r5   )	r   	ephemeralrC   spawngetr   r   
webbrowseropen)r   r9   rA   r$   r$   r%   maing   s   



"rI   )-jsonr6   r+   r   r>   r;   r   rG   typingr   modalr   r   r   r   r   r   loadsr@   rF   r
   dictstr__annotations__CODE_SERVER_INSTALLERCODE_SERVER_ENTRYPOINTFIXUD_INSTALLERappfrom_registryapt_installrun_commandsr4   r   add_local_dir	from_namer   r,   tupler&   function	from_dictdumpsrC   local_entrypointrI   r$   r$   r$   r%   <module>   st   
 $

	





