JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/dnf-plugins/__pycache__/groups_manager.cpython-39.pyc

a

�&c�4�@s�ddlmZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZddl
Z
ddlZ
dZe�d�e��Ze�d�Zdddd	�Zd
d�Zdd
�Zdd�Ze
jjGdd�de
jj��ZdS)�)�absolute_import)�unicode_literalsN)�_�loggerz
-a-z0-9_.:z^[{}]+$z^[-a-zA-Z0-9_.@]+$T)Zdefault_explicitZuservisible_explicitZempty_groupscCst�|�st�td���|S)zgroup id validatorzInvalid group id)�RE_GROUP_ID�match�argparse�ArgumentTypeErrorr)�value�r�>/usr/lib/python3.9/site-packages/dnf-plugins/groups_manager.py�
group_id_type.s
r
cCsN|�dd�}t|�dkr&t�td���|\}}t�|�sFt�td���||fS)ztranslated texts validator�:�z6Invalid translated data, should be in form 'lang:text'z*Invalid/empty language for translated data)�split�lenrr	r�RE_LANGr)r
�data�lang�textrrr�translation_type5s�
rcCs:|��}t�d�t�d|�}|s6tj�td��|���|S)z#generate group id based on its namez[^{}]�zFCan't generate group id from '{}'. Please specify group id using --id.)	�lower�re�sub�format�RE_GROUP_ID_VALID�dnf�cli�CliErrorr)r�group_idrrr�
text_to_idAs��r!csdeZdZdZed�Z�fdd�Zedd��Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Z�ZS)�GroupsManagerCommand)zgroups-managerz$create and edit groups metadata filecstt|��|�t��|_dS�N)�superr"�__init__�libcomps�Comps�comps)�selfr��	__class__rrr%QszGroupsManagerCommand.__init__cCs�|jddgdtd�d�|jddgdtd�d�|jddtd	�d
�|jddd
td�d�|jdttd�d�|jddtd�d�|jdtd�d�|jdttd�d�|jddgdttd�d�|jddgdttd �d�|��}|jd!d"ddtd#�d$�|jd%d"d&dtd'�d$�|��}|jd(dtd)�d*�|jd+dtd,�d*�|jd-dd
td.�d�|jd/dtd0�d*�|jd1d2d3td4�d5�dS)6Nz--load�appendz	COMPS.XMLzload groups metadata from file)�action�default�metavar�helpz--savezsave groups metadata to filez--mergez%load and save groups metadata to file)r/r0z--print�
store_trueFz#print the result metadata to stdout)r-r.r0z--idzgroup id)�typer0z-nz--namez
group name)r0z
--descriptionzgroup descriptionz--display-orderzgroup display orderz--translated-namez	LANG:TEXTztranslated name for the group)r-r.r/r2r0z--translated-descriptionz$translated description for the groupz--user-visible�user_visiblez%make the group user visible (default))�destr-r.r0z--not-user-visible�store_falsezmake the group user invisiblez--mandatoryz%add packages to the mandatory section)r-r0z
--optionalz$add packages to the optional sectionz--removez5remove packages from the group instead of adding themz--dependenciesz-include also direct dependencies for packages�packages�*ZPACKAGEzpackage specification)�nargsr/r0)�add_argumentrr
�intr�add_mutually_exclusive_group)�parserZvisible�sectionrrr�
set_argparserUsr
�
��
����
�
�
�
���
��
�z"GroupsManagerCommand.set_argparsercCs�|jj}|jjr"d|_d|_d|_|jjrP|jj�	d|jj�|jj
�|jj�|jjs�|jj
s�|jjs�|jjs�|jjdus�|jjr�|jjs�|jjs�tj�td���dS)NTFrz;Can't edit group without specifying it (use --id or --name))r�demands�optsr6Zsack_activationZavailable_reposZload_system_repo�merge�load�insert�saver,�description�
display_order�translated_name�translated_descriptionr3�id�namerrr)r)r?rrr�	configure�s.���
���zGroupsManagerCommand.configurecCs8|jjD�](}t��}z�|�d�r�t�|��\}tjdd�}z0t	�
||�|��|�|j
�Wt�|j
�nt�|j
�0Wd�q�1s�0Yn
|�|�Wn|tttjf�y"}zZt�}|��D]&}||vr�q�t�|���|�|�q�tj�td��||���WYd}~qd}~00|j|7_qdS)zm
        Loads all input xml files.
        Returns True if at least one file was successfuly loaded
        z.gzF)�deleteNzCan't load file "{}": {})r@rBr&r'�endswith�gzip�open�tempfileZNamedTemporaryFile�shutil�copyfileobj�closeZ	fromxml_frJ�os�unlink�IOError�OSErrorZParserError�setZget_last_errorsr�error�strip�addr�
exceptions�Errorrrr()r)�	file_nameZ
file_compsZgz_fileZ	temp_file�err�seenrYrrr�load_input_files�s.
<�z%GroupsManagerCommand.load_input_filescCs�|jjD]�}z|jj|td�}Wn,tjyL}z|g}WYd}~n
d}~00|r|dd�D]}t�|�	��q^t
j�t
d��||d�	����qdS)N�Zxml_options���zCan't save file "{}": {})r@rDr(Zxml_f�COMPS_XML_OPTIONSr&ZXMLGenErrorrrYrZrr\r]rr)r)r^�errorsr_rrr�save_output_files�s�z&GroupsManagerCommand.save_output_filescCsXd}|r(|jjD]}|j|kr|}q(q|durT|rT|jjD]}|j|kr<|}qTq<|S)zl
        Try to find group according to command line parameters - first by id
        then by name.
        N)r(�groupsrIrJ)r)r rJ�group�grprrr�
find_group�s

zGroupsManagerCommand.find_groupcCs�dd�}|jjr|jj|_|jjr,|jj|_|jjr>|jj|_|jjdurT|jj|_|jjrj||jj�|_|jj	r�||jj	�|_
|jj�r�t�}|jjD]N}t
j�|�}|j|jjdddd���}|s�t�td��|��q�|�|�q�|jj�r(t�}|D]}|�|j�q�|�|jj��j|d��d	d
�|D�}	|jj�rr|	D]*}
|j|
tj d�D]}|j�|��qX�qDn`|jj!�r�tj"}n|jj#�r�tj$}ntj%}t&|	�D],}
|j|
|d��s�|j�'tj(|
|d���q�dS)zE
        Set attributes and package lists for selected group
        cSs"t��}|D]\}}|||<q|Sr#)r&ZStrDict)ZlstZstr_dictrrrrr�langlist_to_strdict�s
z<GroupsManagerCommand.edit_group.<locals>.langlist_to_strdictNTF)Z
with_nevraZ
with_providesZwith_filenameszNo match for argument: {})ZprovidescSsh|]
}|j�qSr)rJ)�.0�pkgrrr�	<setcomp>�z2GroupsManagerCommand.edit_group.<locals>.<setcomp>)rJr2))r@rJrEZdescrFr3ZuservisiblerGZname_by_langrHZdesc_by_langr6rXrZsubjectZSubjectZget_best_query�baseZsackZlatestrZwarningrr�updateZdependenciesZrequires�queryZfilterm�removeZpackages_matchr&ZPACKAGE_TYPE_UNKNOWNZ	mandatoryZPACKAGE_TYPE_MANDATORYZoptionalZPACKAGE_TYPE_OPTIONALZPACKAGE_TYPE_DEFAULT�sortedr,ZPackage)r)rhrkr6Zpkg_specZsubj�qZrequirementsrmZ	pkg_names�pkg_nameZpkg_typerrr�
edit_group�sX




�


�


zGroupsManagerCommand.edit_groupcCs�|��|jjs|jjr�|j|jj|jjd�}|dur�|jjrNtj�t	d���t
��}|jjrt|jj|_|jj|_nD|jjr�t|jj�}|j|dd�r�tj
�t	d��||jj���||_|jj�|�|�|�|��|jjs�|jjs�t|jjtd��dS)N)r rJz-Can't remove packages from non-existent groupzRGroup id '{}' generated from '{}' is duplicit. Please specify group id using --id.rb)rar@rIrJrjrsrr\r]rr&ZGroupr!rrrr(rgr,rwrf�printrDZxml_strrd)r)rhr rrr�run!s0
��
zGroupsManagerCommand.run)�__name__�
__module__�__qualname__�aliasesrZsummaryr%�staticmethodr>rKrarfrjrwry�
__classcell__rrr*rr"Ls
0$=r")Z
__future__rrrrNr&rTrrQrPZdnfpluginscorerrrZdnf.clir�compilerrrrdr
rr!ZpluginZregister_commandrZCommandr"rrrr�<module>s.
�
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg