U e@sddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddlZ ddlZddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z dd l!m"Z"ddl!m#Z#dZ$ej%Z&ej'Z(ddddddZ)e*+Z,e)-e,e,Z,GdddeZ.e jdkrrdZ/dddddZ0ndZ/dddddZ0ej1d d!d"d#d$d%Z2d"d"d&d'd(d)Z3ej1d"d"d*d+d,Z4d"d"d*d-d.Z5d"d"d/d0d1d2Z6ej7d3d"d4d5d6d7Z8d3d"d8d/d9d:d;Z9dS)<) annotationsN)ContextManager) Generator)IO)Protocol)Sequence) lang_base) envcontext)PatchesT)Var)Prefix) cmd_output)rmtreeZ golangenvamd64Z386arm64Zarmv6l)x86_64i386aarch64Zarmv8armv7lc@seZdZdddddZdS) ExtractAllstrNone)pathreturncCsdSN)selfrrrI/opt/hc_python/lib/python3.8/site-packages/pre_commit/languages/golang.py extractall.zExtractAll.extractallN)__name__ __module__ __qualname__rrrrrr-srwin32zipz IO[bytes]zContextManager[ExtractAll])biorcCs t|Sr)zipfileZipFiler%rrr _open_archive4sr)ztar.gzcCs tj|dS)N)fileobj)tarfileopenr(rrrr)9s)maxsizer)rcCstdrdStjSdS)Ngosystem)rZ exe_existsCDEFAULTrrrrget_default_version=s r3r )venvversionrc Csj|dkr(dtj|dtjtdfffSdtj|dfdtj|dtjtj|ddtjtdfffS)Nr0PATHbinGOROOT.go)osrjoinpathsepr )r4r5rrr get_env_patchEs r=)r5rcCs4|tjkr|Stjd}t|ddddS)Nzhttps://go.dev/dl/?mode=jsonrr5)r1r2urllibrequesturlopenjsonload)r5resprrr_infer_go_versionVs  rEcCs0t}t|}d|d|dtdtS)Nzhttps://dl.google.com/go/go.-)platformr0lowerrE_ARCH_EXT)r5os_namerrr_get_url_s rMr)r5destrc Csztjt|}WnTtjjk rh}z2|jdkrVtdt dt d|nW5d}~XYnjXt :}t|||dt|}||W5QRXW5QRXttj|dtj|ddS)Niz?Could not find a version matching your system requirements (os=z; arch=)rr/r9)r?r@rArMerror HTTPErrorcode ValueErrorrHr0rIrJtempfile TemporaryFileshutil copyfileobjseekr)rmover:rr;)r5rNrDefarchiverrr _install_goes      r]r zGenerator[(None, None, None)])prefixr5rc cs2t|t|}tt|| dVW5QRXdSr)renvironment_dirENVIRONMENT_DIRr r=)r^r5Zenvdirrrrin_envzsraz Sequence[str])r^r5additional_dependenciesrcCst|t|}|dkr t||tjdkr@tdd|d}n|}tt j |d}| dd|dkrt j |d|d <t j t j |dd t j d f|d <tj|d |d |D]}tj|dd|f|d qt j |d}t j |rt|dS)Nr0cygwinZcygpathz-wr-)ZGOPATHZGOBINr9r8r7r6)r/installz./...)envr/rdpkg)rr_r`r]sysrHr stripdictr:environpoprr;r<Z setup_cmdexistsr)r^r5rbZenv_dirZgopathre dependencyZpkgdirrrrinstall_environments(     rn): __future__r contextlib functoolsrBos.pathr:rHrVrgr+rT urllib.errorr?urllib.requestr&typingrrrrrZpre_commit.constants constantsr1Z pre_commitrZpre_commit.envcontextr r r Zpre_commit.prefixr Zpre_commit.utilr rr`Zbasic_health_checkZ health_checkZbasic_run_hookZrun_hookZ _ARCH_ALIASESmachinerIrJgetrrKr) lru_cacher3r=rErMr]contextmanagerrarnrrrrsh