
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
©ft`f  ã               @   sP  d Z 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 ddl	m
Z
 ddlmZ 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ZddlZddlZddlZddlZddl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dd„ Zdd„ Z eee
fdd„Z!dd„ Z"dd„ Z#dd„ Z$d dd„Z%e&dk�rLe%ej'dd… dd� dS )!z4
Entrance point for the yum command line interface.
é    )Úprint_function)Úabsolute_import)Úunicode_literals)ÚConf)ÚCli)ÚOptionParser)Úucd)Úshow_lock_owner)Ú_NÚdnfc             C   s&   t jtjjddd� t jt| ƒƒ dS )NÚ T)Úexc_infoé   )ÚloggerÚlogr   ÚloggingÚSUBDEBUGÚcriticalr   )Úe© r   ú/usr/lib/python3.6/main.pyÚ
ex_IOError2   s    r   c             C   s6   t jtjjddd� | jd k	r2t jtdƒt| ƒƒ dS )Nr   T)r   z	Error: %sr   )	r   r   r   r   r   Úvaluer   r
   r   )r   r   r   r   Úex_Error8   s    
r   c             C   sÂ  y6t jjƒ  t jjj|ƒ ƒ�}t|| ||ƒS Q R X W �n† t jjk
rr } ztj	|j
ƒ t|jƒ dS d }~X �nL t jjk
r¢ } ztj	|j
ƒ dS d }~X �n t jjk
rÆ } zdS d }~X � nø t jjk
� rî } zt|ƒS d }~X nÐ tjk
�r$ } ztj	tdƒt|ƒƒ dS d }~X nš tjjk
�r\ } ztj	tdƒt|ƒƒ dS d }~X nb tk
�r€ } zt|ƒS d }~X n> tk
�r¼ } z tj	djt|ƒjtdƒƒƒ dS d }~X nX d S )NéÈ   r   z	Error: %sz{}: {}zTerminated.)r   Zi18nZsetup_stdoutÚcliZBaseCliÚ_mainÚ
exceptionsZProcessLockErrorr   r   r   r	   ÚpidÚ	LockErrorÚDepsolveErrorÚErrorr   ÚhawkeyÚ	Exceptionr
   r   ÚlibdnfÚerrorÚIOErrorr   ÚKeyboardInterruptÚformatÚtypeÚ__name__)ÚargsZ
conf_classÚ	cli_classZoption_parser_classÚbaser   r   r   r   Úmain?   s4    

r.   c             C   sb   | j jƒ  || ƒ}y|jttt|ƒƒ|ƒ ƒ W n( ttfk
rV } zt|ƒS d}~X nX t	|| ƒS )z2Run the dnf program from a command line interface.N)
Z_loggingZ	_presetupZ	configureÚlistÚmapr   r&   ÚOSErrorr   Úcli_run)r-   r+   r,   Zoption_parserr   r   r   r   r   r   \   s    
r   c          ,   C   sè  yt dƒ}W nF tk
rR } z*|jtjkrBtjtdƒƒ tjdƒ W Y d d }~X n
X |j	ƒ  y| j
ƒ  W n@ tjjk
r‚   ‚ Y n( ttfk
r¨ } zt|ƒS d }~X nX | jj�rÖyt| |ƒ}W �n tjjk
�rÊ } zät|ƒ d}| jj �r|jjdd��r|tdƒjdƒ7 }| jjj�rN|�s<|td	ƒjd
ƒ7 }n|tdƒjd
ƒ7 }| jjj�r¢| jjjdƒ}|tjjk�r¢|�s�|tdƒjdƒ7 }n|tdƒjdƒ7 }|�r¸tjdj|ƒƒ ‚ W Y d d }~X nX |�rÖ|S | jj ƒ  | jj!S )NÚ.z8No read/execute access in current directory, moving to /ú/r   T)Z	availablez?try to add '{}' to command line to replace conflicting packagesz--allowerasingz.try to add '{}' to skip uninstallable packagesz--skip-brokenz' or '{}' to skip uninstallable packagesÚbestz7try to add '{}' to use not only best candidate packagesz--nobestz0 or '{}' to use not only best candidate packagesz({}))"Úopenr&   ÚerrnoZEACCESr   r   r
   ÚosÚchdirÚcloseZrunr   r   r   r1   r   ÚdemandsÚ	resolvingr    r   Úallow_erasingZ_goalZproblem_conflictsr(   r-   ZconfÚstrictr5   Z_get_priorityZPRIO_MAINCONFIGÚinfoÚcommandZrun_transactionZsuccess_exit_status)r   r-   Úfr   ÚretÚmsgZprior   r   r   r2   m   sT    







r2   c             C   s
  |j dkr&|j| jjƒ tjtdƒƒ | jjƒ  g }| jj	dk	rN|j
| jj	ƒ y|j|d� W n˜ tjjk
r� } ztjt|ƒƒ dS d}~X nv tjjk
rÒ } z$x| jj|ƒD ]}tj|ƒ q²W dS d}~X n4 tk
� rö } zt|ƒS d}~X nX tjtdƒƒ dS )z9Perform the depsolve, download and RPM transaction stage.NzDependencies resolved.)Zdisplayr   z	Complete!r   )ZtransactionZresolver;   r=   r   r?   r
   r@   Zrun_resolvedZtransaction_displayÚappendZdo_transactionr   r   ZCliErrorr%   r   r   ZTransactionCheckErrorZget_error_outputr   r&   r   )r   r-   ZdisplaysÚexcÚerrrC   r   r   r   r   r<   ¢   s(    

r<   Fc             C   s   t | ƒ}|rtj|ƒ |S )ap  Call one of the multiple main() functions based on environment variables.

    :param args: command line arguments passed into yum
    :param exit_code: if *exit_code* is True, this function will exit
       python with its exit code when it has finished executing.
       Otherwise, it will return its exit code.
    :return: the exit code from dnf.yum execution
    )r.   ÚsysÚexit)r+   Ú	exit_codeZerrcoder   r   r   Ú	user_main¿   s    

rJ   Ú__main__r   T)rI   )F)(Ú__doc__Z
__future__r   r   r   Zdnf.confr   Zdnf.cli.clir   Zdnf.cli.option_parserr   Zdnf.i18nr   Zdnf.cli.utilsr	   r
   Zdnf.clir   Zdnf.exceptionsZdnf.loggingZdnf.utilr7   r"   Zlibdnf.errorr$   r   r8   Zos.pathrG   Z	getLoggerr   r   r   r.   r   r2   r<   rJ   r*   Úargvr   r   r   r   Ú<module>   sB   
5

