U
    ·ÜŸj‘  ã                   @  s<  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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	r˜d 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#œd$d%„Z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-2qj3ofc_/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   3   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_dirC   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)r1   r   r   r   Ú_debugK   s    r7   c               
   C  sâ  t jdkrtdƒ‚tdƒ t jdkr(dnd} tƒ d }|d }|d	 }|d
 }|d }| ¡ rzt|› d�ƒ t j ¡  |S td|› �ƒ |jddd� | ¡ r¦| 	¡  t
ƒ }td|› �ƒ d|› d| › �}d|› d�}t j d|› d�¡ t ¡ �^}	|	j|dd�}
|
jdk�rtd|› �ƒ‚t|dƒ� }|
 ¡ D ]}| |¡ �q0W 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 t||ƒ 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 CLIz Using Grit installer from GitHubÚdarwinzapple-darwinzunknown-linux-gnuzopenai-pythonz.installÚbinr   zgrit.tmpz already existszUsing Grit CLI path: T)ÚparentsÚexist_okzUsing architecture zgrit-ú-z;https://github.com/getgrit/gritql/releases/latest/download/z.tar.gzzDownloading Grit CLI from r3   )Zfollow_redirectséÈ   z!Failed to download Grit CLI from Úwbzcli-binzr:gz)é   é   Údata)Úfilterií  )r4   Úplatformr   r7   r/   Úexistsr5   ÚflushÚmkdirÚunlinkÚ	_get_archr6   ÚhttpxZClientr-   Ústatus_codeÚopenZ
iter_bytesÚtarfileÚversion_infoÚ
extractallÚ_move_files_recursivelyÚshutilÚrmtreer+   ÚremoveÚchmod)rD   Zdir_nameZinstall_dirÚ
target_dirÚtarget_pathÚ	temp_fileÚarchÚ	file_nameÚdownload_urlÚclientZdownload_responseÚfileÚchunkÚunpacked_dirÚarchiver   r   r   r$   R   sR    



"



r$   )Ú
source_dirrU   r   c                 C  s>   |   ¡ D ]0}| ¡ r&| ||j ¡ q| ¡ rt||ƒ qd S r"   )ÚiterdirÚis_fileÚrenameÚnameÚis_dirrP   )r`   rU   Úitemr   r   r   rP   ‘   s
    rP   c                  C  s&   t  ¡  ¡ } dddddœ}| | | ¡S )NÚx86_64Úaarch64)rg   Úamd64Úarmv7lZarm64)rD   ÚmachineÚlowerr-   )ÚarchitectureZarch_mapr   r   r   rI   ™   s    ürI   )!Ú
__future__r   r+   r4   rQ   rM   rD   r%   Útypingr   r   Úpathlibr   Úargparser   rJ   Ú_errorsr   r	   Z_modelsr
   r   r   r   r   r   r   ZKEYGEN_ACCOUNTr/   r7   r$   rP   rI   r   r   r   r   Ú<module>   s2   ?