U e@srddlmZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddl m Z ddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZd ZejZejZ dddddZ!ej"ddddddZ#ddddddZ$ej%dddddd Z&ddd!d"d#d$Z'ddd!dd%d&Z(ddd!dd'd(Z)ddd)d!d*d+d,Z*dS)-) annotationsN) Generator)IO)Sequence) lang_base) envcontext)PatchesT)UNSET)Var)Prefix)CalledProcessErrorrbenvstrz IO[bytes])filenamereturncCstjd|S)Nzpre_commit.resources) importlib resources open_binary)rrG/opt/hc_python/lib/python3.8/site-packages/pre_commit/languages/ruby.py_resource_bytesiosr)maxsize)rcCs tdddDrdStjSdS)Ncss|]}t|VqdSN)rZ exe_exists).0exerrr !sz&get_default_version..)rubygemsystem)allCDEFAULTrrrrget_default_versionsr#r)venvlanguage_versionrc Csdtj|dfdtfdf}|dkrL|dtj|ddtjtdfff7}nL|d|fdtj|ddtjtj|d tjtj|dtjtdfff7}|d kr|d |ff7}|S) NZGEM_HOMEgemsZGEM_PATH)ZBUNDLE_IGNORE_CONFIG1rPATHbinZ RBENV_ROOTZshims>rdefaultZ RBENV_VERSION)ospathjoinr pathsepr )r$r%Zpatchesrrr get_env_patch's:    r/r zGenerator[(None, None, None)])prefixversionrc cs2t|t|}tt|| dVW5QRXdSr)renvironment_dirENVIRONMENT_DIRrr/)r0r1envdirrrrin_envJsr5None)rdestrc Cs:t|(}tj|d}||W5QRXW5QRXdS)N)fileobj)rtarfileopen extractall)rr7Zbiotfrrr_extract_resourceQs r=cCs`t|t|}td|dt|d||tjkr\t j |d}td|td|dS)Nz rbenv.tar.gz.r pluginszruby-download.tar.gzzruby-build.tar.gz) rr2r3r=r,shutilmover!r"r+r-)r0r1r4Z plugins_dirrrr_install_rbenvWs  rBc CsBzt|dd|fWn&tk r<t|dd|fYnXdS)Nr downloadinstall)r setup_cmdr )r0r1rrr _install_rubygsrFz Sequence[str])r0r1additional_dependenciesrcCst|t|}|dkrbt||t||2t|d|tjkrLt||t|dW5QRXt||\t|d| dt|dddd d d t j |d d t j |d df | d|W5QRXdS)Nr)r init-)r rehashrbuildz.gemspecrDz --no-documentz--no-format-executablez--no-user-installz --install-dirr&z--bindirr)z.gem)rrK) rr2r3rBr5rEr!r"rFstarr+r,r-)r0r1rGr4rrrinstall_environmentrs:        rM)+ __future__r contextlib functoolsimportlib.resourcesros.pathr+r@r9typingrrrZpre_commit.constants constantsr!Z pre_commitrZpre_commit.envcontextrrr r Zpre_commit.prefixr Zpre_commit.utilr r3Zbasic_health_checkZ health_checkZbasic_run_hookZrun_hookr lru_cacher#r/contextmanagerr5r=rBrFrMrrrrs<             #