<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
g:                 @   s   d dl mZ d dl mZ d dlmZ d dlmZ d dlmZm	Z	 d dl
Zd dlZd dlZd dlZd dlZejdZG dd	 d	ejZdS )
    )absolute_import)unicode_literals)
CompsQuery)commands)_ucdNdnfc                   s   e Zd ZdZdddddddZd-eej  Zed
Z	dddZ
d.Zd/Zdd Z fddZdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zed%d& Zd'd( Zd)d* Zd+d, Z  ZS )0GroupCommandz; Single sub-command interface for most groups interaction. listinstallremoveinfo)Z	grouplistZgroupinstallZgroupupdateZgroupremoveZ
grouperaseZ	groupinfogroupgroupsgrpz'display, or use, the groups informationupgrade)updateZerasesummarymarkc             C   sn   | j j| jj}|r<| jjd k	r4| jjjd| jj || j_| jjd krPd| j_| jj| jj| jj| j_d S )Nr   r   )direct_commandsgetoptsZcommandsubcmdargsinsert_CMD_ALIASES)selfZdirect r   /usr/lib/python3.6/group.py
_canonical6   s    zGroupCommand._canonicalc                s   t t| j| d| _d S )NF)superr	   __init___remark)r   cli)	__class__r   r   r!   C   s    zGroupCommand.__init__c             C   s$   t d}t| jjs tjj|d S )Nz4No group data available for configured repositories.)r   lenbasecompsr   
exceptionsZ
CompsError)r   msgr   r   r   _assert_compsG   s    zGroupCommand._assert_compsc                sT    fdd} j   |d kr( jjj}n jjjdj|}tjjt	tjj
||S )Nc                s    j jjj| j}| S )N)r&   historyenvr   id)r,   Z	env_found)r   r   r   available_predM   s    z7GroupCommand._environment_lists.<locals>.available_pred,)r*   r&   r'   environmentsenvironments_by_patternjoinr   utilZmapallr
   	partition)r   patternsr.   envsr   )r   r   _environment_listsL   s    zGroupCommand._environment_listsc       	         s    fdd}g }g } j   |d kr0 jjj}n jjjdj|}x2|D ]*}|}||r^|}| sj|jrJ|j| qJW ||fS )Nc                s    j jjj| j}|rdS dS )NTF)r&   r+   r   r   r-   )r   Zgroup_found)r   r   r   installed_predZ   s    z1GroupCommand._group_lists.<locals>.installed_predr/   )r*   r&   r'   r   groups_by_patternr2   uservisibleappend)	r   r:   r5   r8   	installed	availableZgrpsr   Ztgt_listr   )r   r   _group_listsY   s    
zGroupCommand._group_listsc             C   s~   xt|D ]l}d}x&| j jj|D ]}| jj| d}qW x&| j jj|D ]}| jj| d}qFW |stjt	d| qW dg fS )NFTz!Warning: Group %s does not exist.r   )
r&   r'   r1   outputZdisplay_groups_in_environmentr9   Zdisplay_pkgs_in_groupsloggererrorr   )r   userlistZstrngZgroup_matchedr,   r   r   r   r   _infoq   s    
zGroupCommand._infoc                s  d}d}d}| j jjp| jjxz|r|d dkr@d}|jd q |d dkr\d}|jd q |d dkrxd}|jd q |d dkrd|jd q P q W | jjrd}| jjrd}| jjrd}|sd }d}|d k	r@x\|D ]T}| j j	}t
|j|dk}t
|j|dk}	| r|	 rtjtd	d
 | d}qW |r@dg fS | j|\}
}| j||\}} fdd}fdd}|s|td| |s|td|
 |s
d x,|D ]$}|jrq|td| d qW d x,|D ]$}|jsq|td| d qW |rdg fS d x,|D ]$}|jr2q"|td| d q"W d x,|D ]$}|jsdqT|td| d qTW dg fS )N   r   hiddenr<   r=   idsTFzWarning: No groups match:z
   %sc                s`    st |  d|jd k	r|jntd }r:|d|j 7 }|jrN|d|j 7 }t dj| d S )Nz   %sz<name-unset>z (%s)z [%s]z{})printui_namer   r-   	lang_onlyformat)sectr   r)   )done	print_idsr   r   _out_grp   s    z$GroupCommand._list.<locals>._out_grpc                sT   |rt |  xB|D ]:}d|jd k	r(|jntd } rD|d|j 7 }t | qW d S )Nz   %sz<name-unset>z (%s))rG   rH   r   r-   )rK   r6   er)   )rM   r   r   _out_env   s    
z$GroupCommand._list.<locals>._out_envzAvailable Environment Groups:zInstalled Environment Groups:zInstalled Groups:zInstalled Language Groups:zAvailable Groups:zAvailable Language Groups:)r&   confverboser   rF   poprE   r<   r=   r'   r%   r9   r1   r@   rA   r   r7   r>   rI   )r   rB   r:   ZshowinstalledZshowavailableZerrsr   r'   Zin_groupZin_environmentZenv_instZ	env_availr<   r=   rN   rP   r   )rL   rM   r   _list   s    


	







zGroupCommand._listc       	      C   s   t | jj| jjt jt jB t jt jB }| jj }|j	| }| j
jrXt| jjjdg }nt| jjj}tjj|}x|jD ]}|j|| qzW x|jD ]}|j|| qW d S )Noptional)r   r&   r'   r+   GROUPSENVIRONMENTSZ	AVAILABLE	INSTALLED_build_comps_solverr   r   with_optionaltuplerQ   group_package_typeslibdnfZtransactionZlistToCompsPackageTyper0   Z_environment_installr   Z_group_install)	r   r5   qsolverrestypesZ	pkg_typesenv_idZgroup_idr   r   r   _mark_install   s    


zGroupCommand._mark_installc             C   s   t | jj| jjt jt jB t j}| jj }|j| }x(|j	D ]}t
jj|sPt|j| q<W x(|jD ]}t
jj|szt|j| qfW d S )N)r   r&   r'   r+   rV   rW   rX   rY   r   r0   r   r3   Zis_string_typeAssertionErrorZ_environment_remover   Z_group_remove)r   r5   r^   r_   r`   rb   Zgrp_idr   r   r   _mark_remove   s    


zGroupCommand._mark_removec             C   s*   |d | j kr"|d |dd  fS d|fS )Nr   rD   r   )
_MARK_CMDS)r   extcmdsr   r   r   _mark_subcmd  s    zGroupCommand._mark_subcmdc             C   s   d}t |dkr*|d dkr*d}|jd | jjr6d}|s>d }| j||\}}dd }d}x|D ]}|jrlq`|d7 }q`W |td| d}x|D ]}|jsq|d7 }qW |td| d}x|D ]}|jrq|d7 }qW |td	| d}x|D ]}|j sq|d7 }qW |td
| dg fS )NrD   r   rE   c             S   s   |sd S t jd| | d S )Nz%s %u)r@   r   )rK   Znumr   r   r   rN     s    z'GroupCommand._summary.<locals>._out_grpzInstalled Groups:zInstalled Language Groups:FzAvailable Groups:zAvailable Language Groups:)r%   rS   r   rE   r>   rI   r   )r   rB   r:   r<   r=   rN   rL   r   r   r   r   _summary  sH    




zGroupCommand._summaryc          
   C   s   | j ddtdd | j }|j ddtdd |j ddtdd |j d	dtd
d |j ddtdd | j dddtdjtjd djtjdd  d | j dddtdd d S )Nz--with-optional
store_truez$include optional packages from group)actionhelpz--hiddenzshow also hidden groupsz--installedzshow only installed groupsz--availablezshow only available groupsz--idszshow also ID of groupsr   ?ZCOMMANDz'available subcommands: {} (default), {}r   z, rD   )nargsmetavarrl   r   *ZCOMMAND_ARGzargument for group subcommand)add_argumentr   Zadd_mutually_exclusive_grouprJ   r	   _GROUP_SUBCOMMANDSr2   )parserZ	grpparserr   r   r   set_argparser<  s"    

zGroupCommand.set_argparserc             C   s   | j   | jj}| jj}|| jkrBtjtddj| j t	j
j|d
krf| rf| j
jj|  t	j
j| j
j}d|_|dkrd|_d|_|dkrd|_d	|_nd|_|dkrtj| j |dkrtj| j| j
 d S )Nz$Invalid groups sub-command, use: %s.z, r   r   r   r   Tr   F)r   r   r   r   )r   r   r   r   )r   r   )r   r   r   r   rr   r@   Zcriticalr   r2   r   r#   ZCliErrorZ	optparserZ
print_helpdemandsZsack_activationZ	root_userZ	resolvingZallow_erasingZavailable_reposr   Z_checkEnabledRepor&   Z_checkGPGKey)r   cmdr   ru   r   r   r   	configureP  s.    

zGroupCommand.configurec             C   s  | j j}| j j}|dkr"| j|S |dkr4| j|S |dkrF| j|S |dkr| j|\}}|dkrn| j|S |dkszt| j	|S |dkr0| j j
rt| jjjdg }nt| jjj}d| _y| jj||| jjjS  tjjk
r. } z6td	}tj|| jjjj| tjjtd
W Y d d }~X nX |dkrF| jj|S |dkrx<|D ]4}y| jj|g W n tjjk
r   Y nX qVW d S )Nr   r
   r   r   r   r   rU   TzNo package %s available.z)Unable to find a mandatory group package.r   )r   r   r   ri   rT   rC   rh   re   rd   rc   rZ   r[   r&   rQ   r\   r"   Zenv_group_installstrictr   r(   ZMarkingErrorr   r@   r   r?   ZtermZboldZPackagesNotAvailableErrorZenv_group_upgradeZenv_group_removeError)r   rv   rg   r   ra   rO   r)   argr   r   r   runo  sF    









zGroupCommand.runc             C   sf   | j s
d S | jj}| jj}|j}x@| jjj j j|dD ]$}|j	j
|}|j||j|| q:W d S )N)name)r"   r&   Z_goalr+   Zgroup_membersZsackZqueryr<   ZfiltermZrpmZ
get_reasonZ
set_reasonZgroup_reason)r   Zgoalr+   namesZpkgreasonr   r   r   run_transaction  s    zGroupCommand.run_transaction)r   r   r   )r   r   )r   r
   r   r   r   r   r   )__name__
__module____qualname____doc__r   r[   keysaliasesr   r   r   rf   rr   r   r!   r*   r7   r>   rC   rT   rc   re   rh   ri   staticmethodrt   rw   r{   r   __classcell__r   r   )r$   r   r	   $   s8   h/*r	   )Z
__future__r   r   Z	dnf.compsr   Zdnf.clir   Zdnf.i18nr   r   Zlibdnf.transactionr]   r   Zdnf.exceptionsZdnf.utilZloggingZ	getLoggerr@   ZCommandr	   r   r   r   r   <module>   s   
