j0ddlmZddlmZddlmZddlZddlZddlmZddlm Z ddl m Z m Z m Z dd lmZmZdd lmZd Zejejed Zd ZdZGddeZddZddZddZddZ dS))absolute_import)print_function)divisionN) StrictVersion) get_directory) check_call check_output list_dirs)EXTENSION_PATTERN ExtensionInfo) Interpreterrubyvenvz rubyvenv.py#z /opt/cloudlinux/venv/bin/python3cjeZdZddZdZdZddZddZddZdZ d Z d Z d Z d Z d ZdZdZdS) EnvironmentNc\||_|r||_n/tjt jj|_| t|_n||_tj t|j|j||_ d|_ d|_ d|z|_dS)Nruby)nameuserpwdgetpwuidosgetuidpw_nameDEFAULT_PREFIXprefixpathjoin _abs_prefix _interpreter_geminterpreter_name)selfrrrs Y/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectruby/environments.py__init__zEnvironment.__init__s  :DII RY[[119DI >(DKK DKGLLTY !D!DdKK   & c j|jjd|jjd|jd|jd|jd S)N.z(name='z ', user='z ', prefix='z')) __class__ __module____name__rrrr$s r%__repr__zEnvironment.__repr__,s@ N % % %t~'>'>'> IIItyyy$+++/ 0r'cDtj|jfd}|S)NctjdkrtjgtjjtjjdS)Nr)rgeteuid setgroupssetgidpw_gidsetuidpw_uid)user_pwdsr%funcz!Environment._demote..func4sP z||q   R   Iho & & & Iho & & & & &r')rgetpwnamr)r$r8r7s @r%_demotezEnvironment._demote1s4< ** ' ' ' ' ' r'c|j||d}|r||=t|||iS|SN)r interpreter extensions)rr=r>getattrr$keyes r%as_dictzEnvironment.as_dict@sZI++--//++    +#D#&&* *r'c|j||d}|r||=t |||iS|Sr<)rr=rCr>r?r@s r% as_deepdictzEnvironment.as_deepdictKsfI++--5577//++    +#D#&&* *r'c 2|st|j}dttj|jzdz|jzdz}tttd|d|j |j| dS)N) target_user(:)z--promptz--ruby preexec_fn) rrrrrbasenamerrr PYTHON_PATH RUBYVENV_BINbinaryr:)r$r=prompts r%createzEnvironment.createVs =%$)<<?AEK     k( I||~~  ' ' ' ' ' 'r'c\tddd|j|dS)Nz/bin/rmz-rz--interactive=neverrK)rrr:r-s r%destroyzEnvironment.destroycs19d$949QUQ]Q]Q_Q_``````r'cJtj|jSN)rrexistsr-s r%rWzEnvironment.existsfsw~~di(((r'c^|js t|j|j|_|jS)N)rrG)r!rrrr-s r%r=zEnvironment.interpreteris0  U +49$) T T TD   r'ct|js+tj|jdd|_|jS)Nbingem)r"rrrr-s r%r[zEnvironment.gemns/y > TYu==DIyr'ctj|j}|t}|d|ddpd}}t |jt dkr|dd|f}n|ddd|f}|r|d}|d |fz }tj|||rtd |zt|| dS) Nrr z2.6installz --no-documentz --no-rdocz--no-ri-vz6Extension '%s' install is prohibited. System extensionargsrL) r get_locked_extensionsr#splitVERSION_DELIMITERrrr[is_extensions_locked ValueErrorrr:r$ extensionlocked_extensionstversioncommands r%extension_installzEnvironment.extension_installss)?@UVV OO- . .qT1QRR5;B7  # #}U';'; ; ;xxzz9oyIGGxxzz9k9iPG  'ajG g &G  -.?G T T cUXaabb bDLLNN;;;;;;r'ctt|d||dS)NupdaterK)rr[r:)r$rhs r%extension_updatezEnvironment.extension_updates/488::xt||~~NNNNNNr'c~tj|j}|t}|d|ddpd}}|d|ddf}|r|d}|d|fz }tj|||rtd|zt|| dS) Nrr r] uninstallz-xz-ar_z$Extension '%s' removal is prohibitedr`) r rbr#rcrdr[rerfrr:rgs r%extension_uninstallzEnvironment.extension_uninstalls)?@UVV OO- . .qT1QRR5;B7 88::{ItTB  'ajG g &G  -.?G T T QCiOPP PDLLNN;;;;;;r'c i}tj|j}t|dd|}t j|}d|D}t||D]\\}}}tj |||rttd| dDt| |z } | rAt| |dkr|d| d ||<||d ||<|S) Nlistz--localrKc3DK|]\}}tj|VdSrV)r extension_doc).0rh_s r% z)Environment.extensions..sE00 Iq+I66000000r'c6g|]}|S)strip)rxvs r% z*Environment.extensions..s (O(O(Oq(O(O(Or',rz, )docrk)r rbr#r r[r:r findallziprerusetrcgetlenr) r$resultrioutputr>docsrrkr version_diffs r%r>zEnvironment.extensionssb)?@UVVdhhjj&) WWW&.v66 00$.000$' D$9$9 @ @ OT7S12CT7SS @#C(O(OGMM#r|r'r%rrs . . . .000            ' ' ' 'aaa)))!!!  < < <OOO < < <r'rc|st}|r7tjt j|j|Stjt jtjj|SrV) rrrrrr9pw_dirrr)rrs r%r r sd   Fw||CL..5v>>>w||CL55.sEUUQQYY3Y''--//00UUUUUUr'dictrrArrs` r%environments_dictrs0 UUUU,tV:T:TUUU U UUr'cVtfdt||DS)Nc3K|]9}t|V:dSr)rurErrs r%rzz(environments_deepdict..sY55Q]]s]++113344555555r'rrs` r%environments_deepdictrsE 5555%dF33555 5 55r'r)! __future__rrrrrdistutils.versionrclselect.clselectctlrclselect.utilsrr r r>r r interpretersrrrrdirname__file__rOrdrNobjectrr rrrr|r'r%rs'&&&&&%%%%%% ++++++......>>>>>>>>>>88888888%%%%%%w||BGOOH55}EE 0 FFFFF&FFFRFFFF    VVVV555555r'