gAddlZddlmZmZddlmZddlmZmZddl m Z m Z ddl m Z mZddlmZddlmZGd d eZdS) N)DictIterable)Feature)ExternalProgramFailedget_passenger_package_name)CL_SELECTOR_BINMODULES_LOGS_DIR)InstallationFailedExceptionPackageMissingError)WizardInstaller)installed_interpreters_listceZdZejedZej Z dZ dZ dZ dZedZedZdZd Zd Zd S) NodejsInstallerz nodejs.logc |jd| |tdddd|dgdS#t$r}t |d}~wwxYw)Nz,trying to set default NodeJS version as '%s'set --interpreternodejsz--default-version--json app_loggerinfo _run_commandrrr )selfversiones py/clwizard/modules/nodejs.py_set_default_nodejs_versionz+NodejsInstaller._set_default_nodejs_versions KWUUU 7   ##'     % 7 7 7-//Q 6 7!A A AAc |jd| |tdddd|dgdS#t$r}t |d}~wwxYw)Nz(trying to set NodeJS Selector state '%s'rrrz--selector-statusrr)rstatusrs r_set_cloudlinux_selector_statusz/NodejsInstaller._set_cloudlinux_selector_status)s GPPP 7   ##'     % 7 7 7-//Q 6 7rc|jdd|d|D} |j|dS#t$r}t |d}~wwxYw)Nz%Trying to install NodeJS versions: %sz, cg|]}d|zS)z alt-nodejs).0rs r z.?sFFF'|g-FFF)rrjoin_install_groupsrr )rversions group_namesrs r_install_nodejs_versionsz(NodejsInstaller._install_nodejs_versions;s DdiiPXFYFYZZZFFXFFF  7 D + . . . .$ 7 7 7-//Q 6 7s A A&A!!A&cj|d}|dg}|r-||vr)|jd|t||||d|r||dSdS)Ndefault_versionr*zWVersion %s that was specified to be set as default must be included in install_versionsenabled)r )getrerrorr _install_passengerr,r!r)roptionsr.install_versionss rrun_installationz NodejsInstaller.run_installationEs!++&788";;z266  06FFF O ! !7    .// / !!! %%&6777 ,,I,>>>  >  , ,_ = = = = = > >r'c ddhS)Nr.r*r$)clss rsupported_optionsz!NodejsInstaller.supported_optionsXs !:..r'cl ddlm}n"#t$r}td|d}~wwxYw|dS)Nr)get_default_version lvemanagerr)clselect.clselectctlr: ImportErrorr )r:rs r_nodejs_get_default_versionz+NodejsInstaller._nodejs_get_default_version\s\ ; @ @ @ @ @ @ @ ; ; ;%l33 : ;""8,,,s (#(cttdtdDo4|t o|S)a Checks that nodejs selector is ready to work All configurations were done: - At least one interpreter version is installed - Passenger is installed - Nodejs selector is enabled :return: bool value configured or not c3$K|] }|jV dS)N) installedr%its r z9NodejsInstaller._is_already_configured..ps$MM MMMMMMr'r)boolanyr _is_package_installedr_is_nodejs_selector_enabled)rs r_is_already_configuredz&NodejsInstaller._is_already_configuredesj MM'B8'L'LMMM M M 3**+E+G+GHH 30022   r'ctd}d|D}||||dddS)z Return dictionary with two required keys: installed and options. This will be used by lvemanager UI to properly display wizard. rc*g|]}|j |jSr$)rArrBs rr&z2NodejsInstaller.initial_status..|s!UUUR UbjUUUr')r.installed_versionsavailable_versions)already_configuredr3)r rIr>_get_available_versions)rinterpreters_listrLs rinitial_statuszNodejsInstaller.initial_statususr 8AAUU3DUUU"&"="="?"?#'#C#C#E#E&8&*&B&B8&L&L   r'c|jd ddlm}|ddS#t $rYdSwxYw)zN Return True if Nodejs Selector enabled :return: bool z$trying to get NodeJS Selector state.r)CloudlinuxSelectorLibrselector_enabledF)rrclselector.selectorlibrSget_nodejs_selector_statusr=)rrSs rrHz+NodejsInstaller._is_nodejs_selector_enabledsw CDDD  D D D D D D((22MMOOPbc c   55 s(A AAN)__name__ __module__ __qualname__ospathr(r LOG_FILErNODEJS_SELECTOR_REQUIRED_CL_COMPONENT_SUPPORTrr!r,r5 classmethodr8 staticmethodr>rIrQrHr$r'rrrsw||,l;;H%,%<"777$777$777>>>&//[/--\-      "     r'r)rZtypingrrclcommon.constrclcommon.utilsrrclwizard.constantsrr clwizard.exceptionsr r clwizard.modules.baser clwizard.utilsr rr$r'rrhs !!!!!!!!""""""LLLLLLLL@@@@@@@@PPPPPPPP111111666666or'