rY;0ddlmZddlmZddlmZddlZddlZddlmZddlm 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 3./commons/lib/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)NcltjjtjjdSN)rsetgidpw_gidsetuidpw_uid)user_pwdsr%funcz!Environment._demote..func4s- Iho & & & Iho & & & & &r')rgetpwnamr)r$r7r6s @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<rBr=r>r?s r% as_deepdictzEnvironment.as_deepdictEsfI++--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_BINbinaryr9)r$r<prompts r%createzEnvironment.createPs =%$)<<?AEK     k( I||~~  ' ' ' ' ' 'r'c\tddd|j|dS)Nz/bin/rmz-rz--interactive=neverrJ)rrr9r-s r%destroyzEnvironment.destroy]s19d$949QUQ]Q]Q_Q_``````r'cJtj|jSr1)rrexistsr-s r%rUzEnvironment.exists`sw~~di(((r'c^|js t|j|j|_|jS)N)rrF)r!rrrr-s r%r<zEnvironment.interpretercs0  U +49$) T T TD   r'ct|js+tj|jdd|_|jS)Nbingem)r"rrrr-s r%rYzEnvironment.gemhs/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 extensionargsrK) r get_locked_extensionsr#splitVERSION_DELIMITERrrrYis_extensions_locked ValueErrorrr9r$ extensionlocked_extensionstversioncommands r%extension_installzEnvironment.extension_installms)?@UVV OO- . .qT1QRR5;B7  # #}U';'; ; ;xxzz9oyIGGxxzz9k9iPG  'ajG g &G  -.?G T T cUXaabb bDLLNN;;;;;;r'ctt|d||dS)NupdaterJ)rrYr9)r$rfs r%extension_updatezEnvironment.extension_update|s/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 r`r#rarbrYrcrdrr9res 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--localrJc3DK|]\}}tj|VdSr1)r extension_doc).0rf_s r% z)Environment.extensions..sE00 Iq+I66000000r'c6g|]}|S)strip)rvvs r% z*Environment.extensions..s (O(O(Oq(O(O(Or',rz, )docri)r r`r#r rYr9r findallziprcrssetragetlenr) r$resultrgoutputr=docsrrir version_diffs r%r=zEnvironment.extensionssb)?@UVVdhhjj&) WWW&.v66 00$.000$' D$9$9 @ @ OT7S12CT7SS @#C(O(OGMM#>>w||CL55.sEUUQQYY3Y''--//00UUUUUUr'dictrr@rrs` r%environments_dictrs0 UUUU,tV:T:TUUU U UUr'cVtfdt||DS)Nc3K|]9}t|V:dSr)rsrDrrs r%rxz(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__rNrbrMobjectrr rrrrzr'r%rs'&&&&&%%%%%% ++++++......>>>>>>>>>>88888888%%%%%%w||BGOOH55}EE 0 @@@@@&@@@FFFFF    VVVV555555r'