ó ¾[/\c@@s²ddlmZddlmZddlmZddlmZddlmZm Z ddlZ ddl Z ddl Z ddl Z e jdƒZdejfd „ƒYZdS( i(tabsolute_import(tunicode_literals(t CompsQuery(tcommands(t_tucdNudnft GroupCommandcB@seZdZidd6dd6dd6dd6dd6d d 6Zd!eejƒƒZed ƒZidd6dd6Z d"Z d„Z d„Z d„Z d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zed„ƒZd„Zd„Zd „ZRS(#u; Single sub-command interface for most groups interaction. ulistu grouplistuinstallu groupinstallu groupupdateuremoveu groupremoveu grouperaseuinfou groupinfougroupugroupsu'display, or use, the groups informationuupgradeuupdateuerasecC@s®|jj|jjdƒ}|rb|jjdk rS|jjjd|jjƒn||j_n|jjdkrƒd|j_n|jj|jj|jjƒ|j_dS(Niusummary( tdirect_commandstgettoptstcommandtsubcmdtNonetargstinsertt _CMD_ALIASES(tselftdirect((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _canonical4scC@s#tt|ƒj|ƒt|_dS(N(tsuperRt__init__tFalset_remark(Rtcli((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyRAscC@s7tdƒ}t|jjƒs3tjj|ƒ‚ndS(Nu4No group data available for configured repositories.(Rtlentbasetcompstdnft exceptionst CompsError(Rtmsg((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _assert_compsEs c@sw‡fd†}ˆjƒ|dkr7ˆjjj}nˆjjjdj|ƒƒ}tjj t tjj ||ƒƒS(Nc@s ˆjjjj|jƒ}| S(N(RthistorytenvRtid(R!t env_found(R(s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pytavailable_predKsu,( RR RRt environmentstenvironments_by_patterntjoinRtutiltmapalltlistt partition(RtpatternsR$tenvs((Rs:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt_environment_listsJs   c @s·‡fd†}g}g}ˆjƒ|dkrCˆjjj}nˆjjjdj|ƒƒ}xI|D]A}|}||ƒr‰|}n| s™|jrh|j|ƒqhqhW||fS(Nc@s)ˆjjjj|jƒ}|r%tStS(N(RR tgroupRR"tTrueR(R/t group_found(R(s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pytinstalled_predXsu,( RR RRtgroupstgroups_by_patternR't uservisibletappend( RR5R,R2t installedt availabletgrpstgrpttgt_list((Rs:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _group_listsWs     cC@s|jjdtƒdS(Nt arch_filter(Rt read_compsR0(R((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _grp_setuposcC@s¬xŸ|D]—}t}x3|jjj|ƒD]}|jj|ƒt}q)Wx3|jjj|ƒD]}|jj|ƒt}q_W|st j t dƒ|ƒqqWdgfS(Nu!Warning: Group %s does not exist.i( RRRR&toutputtdisplay_groups_in_environmentR0R4tdisplay_pkgs_in_groupstloggerterrorR(Rtuserlisttstrngt group_matchedR!R/((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt_infors   c@s5d}d}d}t|ƒdkr™|ddkrJd}|jdƒq™|ddkrpd}|jdƒq™|ddkr™d}|jdƒq™nˆjjr®d}nˆjjrÃd}nˆjjrØd}n|sçd}nt}|dk rx|D]y}ˆjj }t|j |ƒƒdk}t|j |ƒƒdk} | r| rt j tdƒd|ƒt}qqW|rdgfSnˆj|ƒ\} } ˆj||ƒ\} } ‡‡fd†}‡fd †}|sú|td ƒ| ƒn|s|td ƒ| ƒn|st‰x6| D].}|jr>q)n|td ƒ|ƒt‰q)Wt‰x9| D].}|js}qhn|td ƒ|ƒt‰qhWn|r­dgfSt‰x6| D].}|jrÏqºn|tdƒ|ƒt‰qºWt‰x6| D].}|jsqùn|tdƒ|ƒt‰qùWdgfS(Niiuhiddenu installedu availableuWarning: No groups match:u %sc@smˆs|GHnd|j}ˆjjjr>|d|j7}n|jr[|d|j7}ndj|ƒGHdS(Nu %su (%s)u [%s]u{}(tui_nameRtconftverboseR"t lang_onlytformat(tsectR/R(tdoneR(s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt_out_grpªs  c@sX|r|GHnxC|D];}d|j}ˆjjjrK|d|j7}n|GHqWdS(Nu %su (%s)(RIRRJRKR"(RNR-teR(R(s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt_out_env´s  uAvailable Environment Groups:uInstalled Environment Groups:uInstalled Groups:uInstalled Language Groups:uAvailable Groups:uAvailable Language Groups:(RtpopR thiddenR7R8R RRRR4R&RCRDRR0R.R<RL(RRER5t showinstalledt showavailableterrsR/Rtin_grouptin_environmenttenv_instt env_availR7R8RPRR((RORs:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt_listƒsŠ                           c C@st|jj|jjtjtjBtjtjBƒ}|jjƒ}|j |Œ}|j j r~t |jj jdgƒ}nt |jj jƒ}|jj|ƒ}x*|jD]}tjj|j||ƒq¯Wx*|jD]}tjj|j||ƒqÜWdS(Nuoptional(RRRR tGROUPSt ENVIRONMENTSt AVAILABLEt INSTALLEDt_build_comps_solverRR t with_optionalttupleRJtgroup_package_typest_translate_comps_pkg_typesR%Rtinstall_or_skipt_environment_installR3t_group_install( RR,tqtsolvertresttypest pkg_typestenv_idtgroup_id((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _mark_installäs  cC@s’t|jj|jjtjtjBtjƒ}|jjƒ}|j|Œ}x|j D]}|j |ƒqVWx|j D]}|j |ƒqwWdS(N( RRRR R]R^R`RaRR%t_environment_removeR3t _group_remove(RR,RiRjRkRntgrp_id((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _mark_removeõs  cC@s/|d|jkr%|d|dfSd|fS(Niiuinstall(t _MARK_CMDS(Rtextcmds((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt _mark_subcmdscC@sœd}t|ƒdkrA|ddkrAd}|jdƒqAn|jjrVd}n|sed}n|j||ƒ\}}d„}d}x'|D]}|jr¨q“n|d7}q“W|tdƒ|ƒd}x'|D]}|jsëqÖn|d7}qÖW|tdƒ|ƒt}x'|D]}|jr.qn|d7}qW|tdƒ|ƒt}x'|D]}|jsqq\n|d7}q\W|tdƒ|ƒdgfS( NiiuhiddencS@s!|s dStjd||ƒdS(Nu%s %u(RCtinfo(RNtnum((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyRPsuInstalled Groups:uInstalled Language Groups:uAvailable Groups:uAvailable Language Groups:( RRSR RTR R<RLRR(RRER5R7R8RPROR/((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt_summarysH            cC@s¸|jddddtdƒƒ|jƒ}|jddddtdƒƒ|jddddtd ƒƒ|jd dddtd ƒƒ|jd d dddƒ|jdd dƒdS(Nu--with-optionaltactionu store_truethelpu$include optional packages from groupu--hiddenushow also hidden groupsu --installedushow only installed groupsu --availableushow only available groupsusubcmdtnargsu?tmetavaruCOMMANDuargsu*(t add_argumentRtadd_mutually_exclusive_group(tparsert grpparser((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt set_argparser6s     cC@s0|jƒ|jj}|jj}d }||krbtjtdƒd j|ƒƒtj j ‚n|d kr—| r—|j j j |ƒtj j ‚n|j j }t|_|d krÍt|_t|_n|dkrît|_t|_n t|_tj|jƒ|d kr,tj|j|j ƒndS(Nulistuinfouremoveuinstalluupgradeusummaryumarku$Invalid groups sub-command, use: %s.u, (ulistuinfouremoveuinstalluupgradeusummaryumark(uinstalluremoveumarkuinfo(uinstallumarkuremoveuupgrade(uinstalluupgrade(RR R R RCtcriticalRR'RRtCliErrort optparsert print_helptdemandsR0tsack_activationt root_usert resolvingt allow_erasingRtavailable_reposRt_checkEnabledRepoRt _checkGPGKey(RtcmdR tcmdsRˆ((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyt configureDs.              cC@s|jj}|jj}|jƒ|dkr;|j|ƒS|dkrT|j|ƒS|dkrm|j|ƒS|dkr·|j|ƒ\}}|dkr§|j|ƒS|j |ƒSn|dkr”|jj rît |j j jdgƒ}nt |j j jƒ}t|_y#|j j|||j j jƒSWq”tjjk r}tdƒ}tj||j jjj|ƒƒtjjtd ƒƒ‚q”Xn|d kr°|j j|ƒS|dkrxB|D]7}y|j j|gƒWqÃtjjk rùqÃXqÃWndS( NusummaryulistuinfoumarkuremoveuinstalluoptionaluNo package %s available.u)Unable to find a mandatory group package.uupgrade( R R R R?RzR\RHRwRtRpRbRcRRJRdR0Rtenv_group_installtstrictRRt MarkingErrorRRCRxR@ttermtboldtPackagesNotAvailableErrortenv_group_upgradetenv_group_removetError(RRRvR RlRQRtarg((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pytruncsF                "    cC@s|js dS|jj}|jj}|j}xZ|jjjƒjƒjd|ƒD]4}|j j |ƒ}|j ||j ||ƒƒqSWdS(Ntname( RRt_goalR t group_memberstsacktqueryR7tfiltermtrpmt get_reasont set_reasont group_reason(RtgoalR tnamestpkgtreason((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pytrun_transactions    +(ugroupugroups(uinstalluremove(t__name__t __module__t__doc__RRctkeystaliasesRtsummaryRRuRRRR.R<R?RHR\RpRtRwRzt staticmethodRƒR’RR¬(((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyR#s8           a   /  ,(t __future__RRt dnf.compsRtdnf.cliRtdnf.i18nRRRtdnf.exceptionstdnf.utiltloggingt getLoggerRCtCommandR(((s:/usr/lib/python2.7/site-packages/dnf/cli/commands/group.pyts