U
    Jh                     @   s   d dl Z d dlmZmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZ d dlmZ d dlmZ ejejd	ed
ddZdd Zdd Zed
ddZed
ddZedejejeejdee
dejdde
dejddgdgdZ dS )    N)
exceptionsmessages)CVEsOptions_cves)cli_util)ProArgumentProArgumentGroup
ProCommand)Tablecreate_link)HelpCategory)UAConfig)msgcfgc                K   s@   t | j| jd}zt||d}W n tjk
r:   d }Y nX |S )N)fixable	unfixable)Zoptionsr   )r   r   r   r   r   VulnerabilityDataNotFound)argsr   kwargsZcve_optionsresult r   3/usr/lib/python3/dist-packages/uaclient/cli/cves.py_get_cve_vulnerabilities   s    
r   c                 C   sV   g }| j  D ]B\}}|jD ]2}| j|j}|r|||j|jpDd|jf qq|S )N-)packagesitemscvesgetnameappendZpriorityZ
fix_origin)cve_vulnerabilitiesrowsZpackage_nameZpackage_infoZcveZcve_infor   r   r   _get_cve_table_rows   s    
	r#   c                 C   sX   g }t | dd dD ]>}||d t|d |d t|d d|d d	f q|S )
Nc                 S   s   | d d | d fS )Nr   )ZcriticalZhighZmediumZlowZ
negligible   )index)rowr   r   r   <lambda>3   s    z"_format_cve_rows.<locals>.<lambda>)keyr   r$         zhttps://ubuntu.com/security/{})textZurl)sortedr    r   Zcolorize_priorityr   format)Zcve_rowsZformatted_rowsr&   r   r   r   _format_cve_rows/   s     
r.   c                 C   s   t | |d}|st |jrxtt|}|rHttddddg|d q| jrZtt	j
 q| jrltt	j qtt	j n.| jrtt	j
 n| jrtt	j n
tt	j d S )Nr   ZPackageZPriorityZOriginZVulnerability)Zheadersr"   )r   r   r   r   r.   r#   printr
   r   r   ZCLI_UNFIXABLE_CVES_NOT_AFFECTEDr   ZCLI_FIXABLE_CVES_NOT_AFFECTEDZCLI_CVES_NOT_AFFECTED)r   r   r!   r"   r   r   r   
_list_cvesG   s,    
r0   c                K   sN   | j r| jrtjdddzt| |d W n tk
rH   tj  Y nX d S )Nr   r   )Zoption1Zoption2)r   r   )	r   r   r   ZInvalidOptionCombinationr0   BrokenPipeErrorsysstderrclose)r   r   r   r   r   r   action_cvesg   s     r5   r   Tz--unfixable
store_true)helpactionz	--fixable)Z	arguments)r7   Zdescriptionr8   Zhelp_categoryZpreserve_descriptionZargument_groups)!r2   Zuaclientr   r   Z#uaclient.api.u.pro.security.cves.v1r   r   Zuaclient.clir   Zuaclient.cli.commandsr   r   r	   Zuaclient.cli.formatterr
   r   Zuaclient.cli.parserr   Zuaclient.configr   Zwith_spinnerZCLI_CVES_SPINNER_MSGr   r#   r.   r0   r5   ZCLI_CVESZCLI_CVES_DESCZSECURITYZCLI_CVES_UNFIXABLEZCLI_CVES_FIXABLEZcves_commandr   r   r   r   <module>   sF    