a !cS@sddlmZddlmZddlZddlmZddlZddlZddl m Z ddl m Z ddl mZedZGd d d e jZdS) )absolute_import)unicode_literalsN)chain)commands) OptionParser)_dnfc@seZdZdZejejejdZdZ de e Z e dZeddZdd Zd d Zd d ZddZddZddZddZddZddZdS)InstallCommandzUA class containing methods needed by the cli to execute the install command. )z install-nz install-naz install-nevrazalternative-for({}))install localinstallinz,install a package or packages on your systemcCs"|jddtdtjtdddS)Npackage+ZPACKAGEzPackage to install)nargsmetavaractionhelp) add_argumentrrZParseSpecGroupFileCallback)parserr|jjrf||jj|jj j rft j tdg}|jjrP|jjdkrPt jjrHz,t jj|j}|j|jj|jj j dWnt j jyD}zn|jr|jD]}||q|jr |jD]}|d|q|j} | r0tt jj| dWYd}~n d}~00n|jj}|jjr|r||jj|jj j rt j tdn|}|r|r|||jj j rt j tdn|r|jjdkr|||jjdkr| |}t!|dks t!|dks |rH|jj j rHt j j"tdd#||ddS) Nr zNothing to do.strict@rzUnable to find a match )pkg_specZpackages)$_get_nevra_forms_from_commandrZ _populate_update_security_filterrcommand grp_specs pkg_specs_log_not_valid_rpm_file_pathsrconfr r exceptionsErrorrZ WITH_MODULESmodule module_baseZ ModuleBaser Z MarkingErrorsZno_match_group_specsappendZerror_group_specsmodule_depsolv_errorsloggererrorZformat_modular_solver_errorsr_inform_not_a_valid_combination_install_files_install_groups_install_packageslenZPackagesNotAvailableErrorjoin) rerr_pkgserrsZerror_module_specs nevra_formsZskipped_grp_specsr-eZe_specr/rrrrunEs\            . zInstallCommand.runcCs&|jj|jvr|j|jjgSgSdS)N)rr%r:)rrrrr$zsz,InstallCommand._get_nevra_forms_from_commandcCsFtdd|}t|jj|D]$}td}t||jjj |qdS)NcSsd|S)Nr!r)grrrz>InstallCommand._log_not_valid_rpm_file_paths..zNot a valid rpm file path: %s) maprrr'rr0inforoutputtermbold)rr&Z group_namespkgmsgrrrr(sz,InstallCommand._log_not_valid_rpm_file_pathscCs.|D]$}td}t||jjj|qdS)NzNot a valid form: %s)rr0ZwarningrrBrCrD)rformsZformrFrrrr2sz.InstallCommand._inform_not_a_valid_combinationc Csg}|jjj}|jj|jj||jjjdD]\}z|jj||dWq*t j j yt d}t ||jjj|j||Yq*0q*|S)N)r progressrzNo match for argument: %s)rr)r Zadd_remote_rpmsrrrBrHZpackage_installrr* MarkingErrorrr0rArCrDlocationr.)rr8r rErFrrrr3s  zInstallCommand._install_filescCsNz&|jj|t|jjj|jjjdWn"tjjyH|jjjrDYn0dS)Nr) rZenv_group_installtupler)Zgroup_package_typesr rr*r+)rr&rrrr4s   zInstallCommand._install_groupsc CsV|jjj|j|d}|rRtd}t||d t t dd|DdS)N)Zprovidesz/There are following alternatives for "{0}": {1}z, cSsg|] }|jqSr)name).0Zaltrrr r?z7InstallCommand._report_alternatives..) rZsackqueryZfiltermalternatives_provideformatrr0rAr7sortedset)rr#rOrFrrr_report_alternativess  z#InstallCommand._report_alternativesc Csg}|jjj}|jjD]}z|jj|||dWqtjjy}zPd |j |jj j |}t||j|||||WYd}~qd}~00q|S)N)r rGz{}: {})rr)r rr'r rr*rIrQvaluerBrCrDr0rAZ_report_icase_hintrTr.)rr:r9r r#r;rFrrrr5s     "z InstallCommand._install_packagesN)__name__ __module__ __qualname____doc__hawkeyZ FORM_NAMEZFORM_NAZ FORM_NEVRAr:rPrKkeysaliasesrZsummary staticmethodrrr<r$r(r2r3r4rTr5rrrrr %s& 5  r )Z __future__rrZlogging itertoolsrrZZdnf.exceptionsrZdnf.clirZdnf.cli.option_parserrZdnf.i18nrZ getLoggerr0ZCommandr rrrrs