관리-도구
편집 파일: updateinfo.cpython-39.pyc
a �����!c:J����������������������@���s����d�Z�ddlmZ�ddlmZ�ddlmZ�ddlZddlZddlZddlm Z �ddl mZ�ddlm Z mZ�dd lmZ�d d��ZG�dd ��d e j�ZdS�)zUpdateInfo CLI command.�����)�absolute_import)�print_function)�unicode_literalsN)�commands)�OptionParser)�_�exact_width��unicodec�����������������C���s���t�dd��|�D���S�)z7Return maximum length of items in a non-empty iterable.c�����������������s���s���|�]}t�|�V��qd�S��N)r���)�.0�item��r����?/usr/lib/python3.9/site-packages/dnf/cli/commands/updateinfo.py� <genexpr>&��������z_maxlen.<locals>.<genexpr>)�max)�iterabler���r���r����_maxlen$���s����r���c�����������������������s0��e�Zd�ZdZejed�ejed�ejed�ej ed�ej ed�iZed�ed�ed �ed �d�Zdddd d d dd�Z ddgee �����Zed�ZdZdddegZ��fdd�Zedd���Zdd��Zdd��Zdd ��Zd!d"��Zd#d$��Zd%d&��Zd'd(��Zd)d*��Zd+d,��Zd-d.��Z d/d0��Z!d1d2��Z"d3d4��Z#d5d6��Z$���Z%S�)7�UpdateInfoCommandz)Implementation of the UpdateInfo command.�bugfix�enhancement�security�unknown� newpackagez Critical/Sec.zImportant/Sec.z Moderate/Sec.zLow/Sec.)�Critical� Important�Moderate�Low�list�info�summary)zlist-updateinfoz list-securityzlist-seczinfo-updateinfoz info-securityzinfo-seczsummary-updateinfoZ updateinfoZupifz!display advisories about packages� available� installed�updates�allc��������������������s���t�t|���|��d|�_dS�)zInitialize the command.N)�superr����__init__�_installed_query)�self�cli�� __class__r���r���r'���C���s����zUpdateInfoCommand.__init__c�������������� ���C���s��|�����}|jddddtd�d��|jddddtd �d��|jd dddtd�d��|jd dddtd�d��g�d�}|�����}|jddddtd�d��|jddddtd�d��|jddddtd�d��|�jddddtd�d ��|�jd!d"ddtd#�d ��|�jd$d%d&||d'�tjtd(�d)��d�S�)*Nz--available� _availabilityr"����store_constz?advisories about newer versions of installed packages (default))�dest�const�action�helpz--installedr#���z?advisories about equal and older versions of installed packagesz --updatesr$���zbadvisories about newer versions of those installed packages for which a newer version is availablez--allr%���z3advisories about any versions of installed packages)r!���r���r ���z --summary�_spec_actionr!���z$show summary of advisories (default)z--listr���zshow list of advisoriesz--infor ���zshow info of advisoriesz --with-cve�with_cveF� store_truez'show only advisories with CVE reference)r/����defaultr1���r2���z --with-bz�with_bzz,show only advisories with bugzilla reference�spec�*ZSPECr���zPackage specification)�nargs�metavar�choicesr6���r1���r2���)�add_mutually_exclusive_group�add_argumentr���r���ZPkgNarrowCallback)�parser�availabilityZcmdsZ output_formatr���r���r���� set_argparserH���sX�������� � � � � � �zUpdateInfoCommand.set_argparserc�����������������C���s���d|�j�j_d|�j�j_|�jj|�jv�r6|�j|�jj�|�j_n|�jjrJ|�jj|�j_|�jj r`|�jj |�j_ n8|�jjrz|�jjd�|�jvr�|�j |�j_ n|�jj�d�|�j_ t��|�j_|�jjr�|�jj�tj��|�jjr�|�jj�tj��|�jjr�|�jj�tj��|�jj�r|�jj�tj��|�jj�r�|�jj�d�}|dk�r8|�jj�tj��n�|dk�rT|�jj�tj��np|dv��rp|�jj�tj��nT|dk�r�|�jj�tj��n8|dv��r�d|�j_n$|dk�r�d|�j_n|�jj�d|��|�jj�r�|�jj�|�jj��d S�) zADo any command-specific configuration based on command arguments.Tr���r���r���)r���Zsecr���)Z bugzillasZbzs�cvesN) r*���ZdemandsZavailable_reposZsack_activation�optsZcommand�direct_commands�spec_actionr3���r-���r@���r8����availabilities�availability_default�pop�set�_advisory_typesr����add�hawkey�ADVISORY_BUGFIXr����ADVISORY_ENHANCEMENTr����ADVISORY_NEWPACKAGEr����ADVISORY_SECURITYr7���r4����insert�advisory�extend)r)���r8���r���r���r���� configuren���sJ���� zUpdateInfoCommand.configurec�����������������C���s����|�j�jdkr$|��|�j�j�}td�}n^|�j�jdkrH|��|�j�j�}td�}n:|�j�jdkrl|��|�j�j�}td�}n|��|�j�j�}td�}|�j�jdkr�|�� |��n$|�j�jdkr�|�� |��n|��||��dS�)z#Execute the command with arguments.r#���r$���r%���r"���r���r ���N)rC���r@����installed_apkg_adv_instsr8���r����updating_apkg_adv_insts�all_apkg_adv_insts�available_apkg_adv_instsrE����display_list�display_info�display_summary)r)����apkg_adv_insts�descriptionr���r���r����run����s ���� zUpdateInfoCommand.runc�����������������C���s@���|�j�d�u�r |�jj���������|�_�|�j�j|j|jd�}t |�dkS�)N)�nameZevr__gter���) r(����base�sack�queryr#���Zapply�filterr_����evr�len)r)����apackage�qr���r���r����_newer_equal_installed����s���� z(UpdateInfoCommand._newer_equal_installedc��������������������s��|�j�js<|�j�js<|�j�js<|�j�js<|�j�js<|�j�js<|�j�js<dS���j|�j�jv�rNdS�t ��fdd�|�j�jD���rldS�|�j�jr���j|�j�jv�r�dS�|�j�jr�t ��fdd�|�j�jD���r�dS�|�j�jr�t ��fdd�|�j�jD���r�dS�|�j�jr�t dd����j D���r�dS�|�j�j�rt dd����j D����rdS�d S�) NTc�����������������3���s���|�]}t����j|�V��qd�S�r���)�fnmatch�fnmatchcase�id�r����pat�rR���r���r���r�������r���z6UpdateInfoCommand._advisory_matcher.<locals>.<genexpr>c��������������������s���g�|�]}����|��qS�r���)Z match_bug)r���Zbugrn���r���r���� <listcomp>����r���z7UpdateInfoCommand._advisory_matcher.<locals>.<listcomp>c��������������������s���g�|�]}����|��qS�r���)Z match_cve)r���Zcvern���r���r���ro�������r���c�����������������S���s���g�|�]}|j�tjk�qS�r���)�typerL���� REFERENCE_CVE�r����refr���r���r���ro�������r���c�����������������S���s���g�|�]}|j�tjk�qS�r���)rp���rL����REFERENCE_BUGZILLArr���r���r���r���ro�������r���F)rC���rJ���r8����severityZbugzillarB���r4���r7���rp����any� references)r)���rR���r���rn���r����_advisory_matcher����s>����������"" z#UpdateInfoCommand._advisory_matcherc�����������������#���sd���|��|�D�]T�����|�jj�}|��|�}t��fdd�|�jjD���}|sH|r |�����}��||fV��q dS�)z4Return (adv. package, advisory, installed) triplets.c�����������������3���s���|�]}t����j|�V��qd�S�r���)ri���rj���r_���rl����rf���r���r���r�������s����zAUpdateInfoCommand._apackage_advisory_installed.<locals>.<genexpr>N) Zget_advisory_pkgsZget_advisoryr`���ra���rx���rv���rC���r8���rh���)r)���Z pkgs_queryZcmptype�specsrR���Zadvisory_matchZapackage_matchr#���r���ry���r����_apackage_advisory_installed����s���� � z.UpdateInfoCommand._apackage_advisory_installedc�����������������C���s@���|�j�j}|���jdd�}|���}|r<|�|���j|jd��}|S�)z<Return query containing packages of currently running kernelT)�empty)� sourcerpm)r`���ra���rb����filtermZget_running_kernel�unionr}���)r)���ra���rg���Zkernelr���r���r����running_kernel_pkgs����s����z%UpdateInfoCommand.running_kernel_pkgsc�����������������C���s8���|�j�j�������d�}|�|��������}|��|tj |�S�)z5Return available (adv. package, adv., inst.) triplets����) r`���ra���rb���r#���Zlatestr���r����r{���rL����GT)r)���rz���rg���r���r���r���rX�������s����z*UpdateInfoCommand.available_apkg_adv_instsc�����������������C���s"���|���|�jj������tjtjB�|�S��z5Return installed (adv. package, adv., inst.) triplets)r{���r`���ra���rb���r#���rL����LT�EQ�r)���rz���r���r���r���rU�������s�����z*UpdateInfoCommand.installed_apkg_adv_instsc�����������������C���s ���|���|�jj���jdd�tj|�S�)z4Return updating (adv. package, adv., inst.) tripletsT)Z upgradable)r{���r`���ra���rb���r~���rL���r����r����r���r���r���rV�������s�����z)UpdateInfoCommand.updating_apkg_adv_instsc�����������������C���s(���|���|�jj������tjtjB�tjB�|�S�r����) r{���r`���ra���rb���r#���rL���r����r����r����r����r���r���r���rW�����s���� �z$UpdateInfoCommand.all_apkg_adv_instsc�����������������C���sR���i�}|D�]:\}}}|j�||j<�|j�tjkr|j�|jf||j|jf<�qt�|����S�)zMake the summary of advisories.)rp���rk���rL���rP���ru����collections�Counter�values)r)���r\����id2type�apkgrR���r#���r���r���r����_summary��s����zUpdateInfoCommand._summaryc����������� ��� ���C���sR��|���|�}|�r8ttd�|���dtd�|tj�fdtd�|tj�fdtd�|tjdf�fdtd�|tjd f�fdtd �|tjdf�fdtd�|tjd f�fdtd�|tjdf�fdtd�|tj�fdtd�|tj�fdtd�|tj�fg }t dd��|D���}|D�]4\}}}|�s�qtd|d|��t |�|f����q|�jjj �rN|�j����dS�)z"Display the summary of advisories.zUpdates Information Summary: r���zNew Package notice(s)zSecurity notice(s)r����zCritical Security notice(s)r���zImportant Security notice(s)r���zModerate Security notice(s)r���zLow Security notice(s)r���zUnknown Security notice(s)NzBugfix notice(s)zEnhancement notice(s)zother notice(s)c�����������������s���s"���|�]}|d��rt�|d���V��qdS�)����Nr ���)r����vr���r���r���r���(��r���z4UpdateInfoCommand.display_summary.<locals>.<genexpr>z %*s %s����)r�����printr���rL���rO���rP���rM���rN����ADVISORY_UNKNOWNr���r ���r`����confZautocheck_running_kernelr*���Z_check_running_kernel) r)���r\���r]���Ztyp2cntZlabel_counts�width�indent�label�countr���r���r���r[�����s>���� ������"z!UpdateInfoCommand.display_summaryc��������������������s�����fdd�}��fdd�}t���}|D�]�\}}}d|j|j|jf�}��jjsP��jjr�|jD�]V} | jt j krr��jjsrqVn| jt jkr���jjs�qV|j|jf|� |||jft����| j<�qVq"|j|jf|� |||jft����|j<�q"g�} d�}�}} t|���dd��d �D�]l\\}}}}t| t|��} |���D�]F\}}t|t|��}||��}t|t|��}| �||�||||f���qq�| D�]R\}}}}}��jjj�r�td |||||| ||f���ntd||||||f����qldS�) zDisplay the list of advisories.c��������������������s �����j�jdksdS�|�rdS�dS�d�S�)Nr%�����zi � )rC���r@���)�inst�r)���r���r���� inst2mark2��s ����z1UpdateInfoCommand.display_list.<locals>.inst2markc��������������������s2���|�t�jkr��j�|td��S���j�|�td��S�d�S�)NzUnknown/Sec.r���)rL���rP����SECURITY2LABEL�getr���� TYPE2LABEL)�typZsevr����r���r���� type2label:��s���� z2UpdateInfoCommand.display_list.<locals>.type2labelz%s-%s.%sr���c�����������������S���s���|�d�S�)Nr���r�����xr���r���r����<lambda>R��r���z0UpdateInfoCommand.display_list.<locals>.<lambda>��keyz%s%-*s %-*s %-*s %sz%s%-*s %-*s %sN)�dictr_���rd����archrC���r4���r7���rw���rp���rL���rt���rq���ru���� setdefault�updatedrk����sorted�itemsr���re����appendr`���r�����verboser����)r)���r\���r����r����Znevra_inst_dictr����rR���r#���Znevrars���ZadvlistZidwZtlwZnwr����Zaupdatedr����ZaidZatypesevr����r���r����r���rY���0��s8���� � �"zUpdateInfoCommand.display_listc��������������������s�����j�j������j�jj�td�td�td�td�td�td�td�td�td �td �f ������fdd�}t��}|D�]\}}}|�|||���qrtd � t |dd��d����dS�)z/Display the details about available advisories.z Update ID�TypeZUpdatedZBugsZCVEsZDescriptionZSeverityZRightsZFilesZ Installedc�������������� ������s���|�j�g�j�|�jtd��gt|�j�gg�g�|�jp0d���|�j g|�j pBd���tt��fdd�|�j D����d�g }|�jD�]L}|jtjkr�|d��d�|j�|jp�d���ql|jtjkrl|d��|j���ql|d�����|d������s�d�|d<�d�|d <��jjd k�r|�rtd�ntd�g|d <�t��}g�}|�d��|�d|�j���|�d��t�|�D�]f\}}|d�d�gfv��rf�qJt|�D�]>\}} |dk�r�|nd} |t| ��}|�d|d| | f����qn�qJd�|�S�)Nr���r����c�����������������3���s���|�]}|j���v�r|jV��qd�S�r���)r�����filename)r����pkg)�archesr���r���r���s��s��� �zHUpdateInfoCommand.display_info.<locals>.advisory2info.<locals>.<genexpr>����z{} - {}r������������r%����trueZfalse� ���zO===============================================================================r����r���z %*s%s: %s� )rk���r����r����rp���r���r ���r����r]���� splitlinesru���Zrightsr����rI���Zpackagesrw���rL���rt���r�����format�titlerq����sortrC���r@���r����zip� enumerater����join)rR���r#���Z attributesrs���r�����linesr����Z atr_lines�i�liner����Zkey_padding�r�����labelsr)���r����r���r���� advisory2infoi��sH���� � z5UpdateInfoCommand.display_info.<locals>.advisory2infoz c�����������������S���s���|�����S�r���)�lowerr����r���r���r���r�������r���z0UpdateInfoCommand.display_info.<locals>.<lambda>r����N)r`���ra���Zlist_archesr����r����r���rI���rK���r����r����r����)r)���r\���r����Z advisoriesr����rR���r#���r���r����r���rZ���a��s���� �(zUpdateInfoCommand.display_info)&�__name__� __module__�__qualname__�__doc__rL���rM���r���rN���rP���r����rO���r����r����rD���r����keys�aliasesr!���rG���rF���r'����staticmethodrA���rT���r^���rh���rx���r{���r����rX���rU���rV���rW���r����r[���rY���rZ���� __classcell__r���r���r+���r���r���)���sR��� ��� %6 1r���)r����Z __future__r���r���r���r����ri���rL���Zdnf.clir���Zdnf.cli.option_parserr���Zdnf.i18nr���r���Z dnf.pycompr ���r���ZCommandr���r���r���r���r����<module>���s���