U
    =Af                     @  sD  d dl m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
mZ d dlmZ d dlmZ d dlZddlmZmZ ddlmZ e
rd d	lmZ d
ddddZG dd deZdddddZG dd deZdddddZdZddddZddddd Zddd!d"Zddd#d$Z dddd%d&d'Z!dS )(    )annotationsN)TYPE_CHECKINGList)Path)ArgumentParser   )CLIErrorSilentCLIError)	BaseModel)_SubParsersActionz!_SubParsersAction[ArgumentParser]None)	subparserreturnc                 C  s8   |  d}|jttdd |  d}|jttdd d S )NmigrateT)funcZ
args_modelZallow_unknown_argsgrit)
add_parserset_defaultsr   MigrateArgsr   GritArgs)r   sub r   =/tmp/pip-unpacked-wheel-5ytfsfyi/openai/cli/_tools/migrate.pyregister   s    

r   c                   @  s   e Zd ZU g Zded< dS )r   	List[str]unknown_argsN__name__
__module____qualname__r   __annotations__r   r   r   r   r      s   
r   )argsr   c                 C  s@   t  }zt|f| j W n tjk
r:   t d Y nX d S )Ninstall
subprocess
check_callr   CalledProcessErrorr	   r!   Z	grit_pathr   r   r   r   $   s
    r   c                   @  s   e Zd ZU g Zded< dS )r   r   r   Nr   r   r   r   r   r   /   s   
r   c                 C  sD   t  }zt|ddf| j W n tjk
r>   t d Y nX d S )NapplyZopenair"   r'   r   r   r   r   4   s
    r   zcustodian-devr   )r   c                  C  s(   t jd} | d k	rt| S t d S )NXDG_CACHE_HOMEz.cache)osenvirongetr   home)Zxdgr   r   r   
_cache_dirD   s    r.   str)messager   c                 C  s(   t jdsd S tjd|  d d S )NDEBUGz	[DEBUG]: 
)r*   r+   r,   sysstdoutwrite)r0   r   r   r   _debugL   s    r6   c               
   C  sZ  t jdkrtdt jdkr dnd} t d }|d }|d }|d	 }|d
 }| rrt| d t j  |S td|  |jddd | r|	  t
 }td|  d|  d| }dt d| }t jd| d t }	|	|}
|
 }|d}|r8|D ]}t j| d qtdt||d d d d d  |d d d }td|  |	|}t|d }| D ]}|| qW 5 Q R X W 5 Q R X |d  }|jddd t|d!,}t jd"kr|j|dd# n
|| W 5 Q R X | D ]}|||j  qt| t| t|d$ t j  |S )%z<Installs the Grit CLI and returns the location of the binarywin32z1Windows is not supported yet in the migration CLIdarwinZmacoslinuxzopenai-pythonz.installbinmarzanozmarzano.tmpz already existszUsing Grit CLI path: T)parentsexist_okzUsing architecture zmarzano--z"https://api.keygen.sh/v1/accounts/z/artifacts/z"Retrieving Grit CLI metadata from r2   errorsz3Could not locate Grit CLI binary - see above errorsdataZrelationshipsreleaseidlinksredirectzRedirect URL wbzcli-binzr:gz)      )filteri  )r3   platformr   r.   existsr6   r4   flushmkdirunlink	_get_archKEYGEN_ACCOUNTr5   httpxZClientr,   jsonwrite_manifestopenZ
iter_bytestarfileversion_info
extractalliterdirrenamenameshutilrmtreer*   removechmod)rI   Zdir_nameZinstall_dir
target_dirtarget_path	temp_filearch	file_nameZmeta_urlclientresponser@   r?   errorlinkZdownload_responsefilechunkunpacked_dirarchiveitemr   r   r   r#   S   sb    






"


r#   c                  C  s&   t   } ddddd}|| | S )Nx64armZarm64)x86_64amd64armv7laarch64)rI   machinelowerr,   )architectureZarch_mapr   r   r   rN      s    rN   )install_pathrA   r   c              	   C  sN   t | dd|did}t| d }t|d}tj||dd W 5 Q R X d S )Nr;   )rY   rA   )ZinstallPathZbinarieszmanifests.jsonwr   )indent)r/   r   rS   rQ   dump)ru   rA   manifestZmanifest_pathfr   r   r   rR      s    	rR   )"
__future__r   r*   r3   rQ   rZ   rT   rI   r$   typingr   r   pathlibr   argparser   rP   _errorsr   r	   Z_modelsr
   r   r   r   r   r   r   rO   r.   r6   r#   rN   rR   r   r   r   r   <module>   s4   K