
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
©ft`~  ã               @   st   d dl mZ d dl mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ ejdƒZG dd	„ d	ejƒZdS )
é    )Úabsolute_import)Úunicode_literalsN)Úcommands)ÚOptionParser)Ú_Údnfc               @   sX   e Zd ZdZdZedƒZed	d
„ ƒZdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚUpgradeCommandzTA class containing methods needed by the cli to execute the
    update command.
    ÚupgradeÚupdateú
upgrade-toú	update-toÚlocalupdateÚupz,upgrade a package or packages on your systemc             C   s"   | j ddtdƒtjtdƒd� d S )NZpackagesÚ*zPackage to upgradeZPACKAGE)ÚnargsÚhelpÚactionÚmetavar)Úadd_argumentr   r   ZParseSpecGroupFileCallback)Úparser© r   ú/usr/lib/python3.6/upgrade.pyÚset_argparser*   s    zUpgradeCommand.set_argparserc             C   sZ   | j j}d|_d|_d|_d|_tj| j| j ƒ | j	j
sDtj| jƒ d| _d| _d| _dS )zÌVerify that conditions are met so that this command can run.

        These include that there are enabled repositories with gpg
        keys, and that this command is being run by the root user.
        TN)ÚcliÚdemandsZsack_activationZavailable_reposZ	resolvingZ	root_userr   Z_checkGPGKeyÚbaseÚoptsÚ	filenamesZ_checkEnabledRepoÚupgrade_minimalÚall_securityÚskipped_grp_specs)Úselfr   r   r   r   Ú	configure0   s    zUpgradeCommand.configurec             C   sœ   | j r
dnd}| jj| j|| jd� | jjs<| jjs<| jjrzd}|| jƒ O }|| j	ƒ O }|| j
ƒ O }|| jƒ O }|rˆd S n| jjƒ  d S tjjtdƒƒ‚d S )NÚeqZgte)Úcmp_typeÚallFzNo packages marked for upgrade.)r   r   Z _populate_update_security_filterr   r   r   Ú	pkg_specsÚ	grp_specsÚ_update_modulesÚ_update_filesÚ_update_packagesÚ_update_groupsr   Zupgrade_allr   Ú
exceptionsÚErrorr   )r!   r$   Úresultr   r   r   ÚrunB   s    

zUpgradeCommand.runc             C   sN   t | jjƒ}tjjr6tjjj| jƒ}|j	| jjƒ| _
n
| jj| _
t | j
ƒ|kS )N)Úlenr   r'   r   r   ZWITH_MODULESÚmoduleÚmodule_baseZ
ModuleBaser	   r    )r!   Zgroup_specs_numr2   r   r   r   r(   V   s    
zUpgradeCommand._update_modulesc             C   s�   d}| j jrŒx~| jj| j jd| jjjd�D ]^}y| jj|ƒ d}W q* tjj	k
r† } z$t
jtdƒ| jjjj|jƒƒ W Y d d }~X q*X q*W |S )NF)ÚstrictÚprogressTzNo match for argument: %s)r   r   r   Zadd_remote_rpmsÚoutputr4   Zpackage_upgrader   r,   ÚMarkingErrorÚloggerÚinfor   ÚtermÚboldÚlocation)r!   ÚsuccessZpkgÚer   r   r   r)   `   s    
*zUpgradeCommand._update_filesc             C   sr   d}xh| j jD ]\}y| jj|ƒ d}W q tjjk
rh } z"tjt	dƒ| jj
jj|ƒƒ W Y d d }~X qX qW |S )NFTzNo match for argument: %s)r   r&   r   r	   r   r,   r6   r7   r8   r   r5   r9   r:   )r!   r<   Zpkg_specr=   r   r   r   r*   m   s    
(zUpgradeCommand._update_packagesc             C   s   | j r| jj| j ƒ dS dS )NTF)r    r   Zenv_group_upgrade)r!   r   r   r   r+   x   s    zUpgradeCommand._update_groupsN)r	   r
   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úaliasesr   ZsummaryÚstaticmethodr   r"   r/   r(   r)   r*   r+   r   r   r   r   r   #   s   
r   )Z
__future__r   r   ZloggingZdnf.exceptionsr   Zdnf.baseZdnf.clir   Zdnf.cli.option_parserr   Zdnf.i18nr   Z	getLoggerr7   ZCommandr   r   r   r   r   Ú<module>   s   
