Edit File: cli.cpython-36.opt-1.pyc
3 {Tcd��������������������@���st��d�Z�ddlmZ�ddlmZ�ddlmZ�yddlmZ�W�n �ek rX���ddlmZ�Y�nX�ddl Z ddl Z ddlZddlZddl Z ddlZddlZddlZddlZddlZddlmZ�dd lmZ�dd lmZmZ�ddlZddlZddlZddlZddlZddl Zddl!Zddl"Zddl#Zddl$Zddl%Zddl&Zddl'Zddl(Zddl)Zddl*Zddl+Zddl,Zddl-Zddl.Zddl/Zddl0Zddl1Zddl2Zddl3Zddl4Zddl5Zddl6Zddl7Zddl8Zddl9Zddl:Zddl;Zddl<Zddl=Zddl>Zddl?Zddl@ZddlAZddlBZddlCZddlDZe jEd�ZFdd d�ZGdd��ZHdd��ZIdd��ZJG�dd��dejK�ZLG�dd��deM�ZNdS�)z/ Command line interface yum class and related. �����)�print_function)�absolute_import)�unicode_literals)�SequenceN����)�output)�CliError)�ucd�_�dnf��c�������������C���s����t�|j�d�t�|j��t�|��}t�|j�}t�|j�}xFd|fd|fd|ffD�],\}}|�|�j|d��|�|�|��d7��<�qLW�dS�)zl Get the length of each pkg's column. Add that to data. This "knows" about simpleList and printVer. r����na�ver�ridr���N)�len�name�archZevrZ _from_repo� setdefault)�data�pkg�indentr ���r���r����d�v��r����/usr/lib/python3.6/cli.py�_add_pkg_simple_list_lens]���s���� r���c�������������C���s����i�i�i�d�}x<|j�|j|j|j|j|jfD�]}x|D�]}t||��q4W�q*W�t|j�dkr�x*|j D�] \}}t||��t||dd��q`W�|d�|d�|d�g}|�j |d d �}|d��|d ��|d��fS�) zA Work out the dynamic size of the columns to pass to fmtColumns. )r ���r���r���r���� ����)r���r ���r���r���r���)Zremainder_column����z )� installed� available�extras� autoremove�updates�recentr���r���� obsoletes�obsoletesTuplesZcalcColumns)r����yplr���Zlstr���ZnpkgZopkg�columnsr���r���r����_list_cmd_calc_columnsh���s���� r)���c������� ������C���s����dd��}t�jj|�}d}x�|j��j��j|�d�D�]�}|r>td��d}|jdkrbd|j|j |j f�}nd |j|j|j |j f�}|jj|j �}ttd �||||j�f���ttd�|jr�|jnd||j�f���q.W�d�S�)Nc�������������S���s���t�jdt�j|���S�)Nz%c)�time�strftimeZgmtime)�xr���r���r���� sm_ui_timez���s����z"print_versions.<locals>.sm_ui_timeF)r���r���T�0z%s-%s.%sz%s:%s-%s.%sz Installed: %s-%s at %sz Built : %s at %s)r����sack� rpmdb_sack�queryr����filterm�printZepoch�version�releaser����term�boldr���r ���ZinstalltimeZpackagerZ buildtime) �pkgs�baser���r-���r0����doner���r���r���r���r���r����print_versionsy���s ���� r;���c�������������C���s>���t�d�}x0|�j��D�]$\}}tj|j||d�|d����qW�d�S�)NzTThe operation would result in switching of module '{0}' stream '{1}' to stream '{2}'r���r���)r ����items�logger�warning�format)�switchedModulesZmsg1Z moduleNameZstreamsr���r���r����report_module_switch����s����rA���c�������������������s����e�Zd�ZdZd ��fdd� Zf�f��fdd� Zdd��Zd d ��Zdd��Zd d��Z f�dddfdd�Z dd��Zg�g�dfdd�Zdf�dfdd�Z d!dd�Z��fdd�Zdd��Z���ZS�)"�BaseCliz#This is the base class for yum cli.Nc����������������s4���|pt�jj��}tt|��j|d��tj|�|�j�|�_d�S�)N)�conf)r���rC���ZConf�superrB����__init__r���ZOutput)�selfrC���)� __class__r���r���rE�������s����zBaseCli.__init__c����������������s��t�jjrJ|�jjsJt|�jj���}|rJt|��t d�j t�jjd�}t�j j|��|�j}|�jj|�}|rjtj|��|r�g�}g�}d}xF|D�]>} | jt�jjkr�|j| j��q�| jt�jjkr�d}|j| j��q�W�|�`|s�|�jj|��n|�jj||��|�s|�jj���s|�j�r�|�jj�s|�jj�r�|�jj �r:tjt d�j t�jj!d���n(d|�jj"k�rbtjt d�j t�jj!d���|�j#���r�|�jj$�s�|�jj%����r�t&t d���ntjt d ���d S�|�rD|�r:tjt d���y|�jj'} |�j(||�jj)| ��W�n\�t�j j*k �r8�}�z:t�j+j j,t-|��}t d�d |��} t.���t�j j| ��W�Y�d d }~X�nX�|�j/|��|�jj �rRd S�t0|t1��sd|g}tj2��gt3|��}t4t5|��j6|�}|d k �r�|�j7j8|g�d�}t�j9jj:|�j7|j;�}nd }|�rt.���t.dj<|�jj=|����t.���x.|D�]&} | j>t?jj@k�r�t�j jt d����q�W�|S�)z�Take care of package downloading, checking, user confirmation and actually running the transaction. :param display: `rpm.callback.TransactionProgress` object(s) :return: history database transaction ID or None aQ��It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch. It is recommended to rather remove all installed content from the module, and reset the module using '{prog} module reset <module_name>' command. After you reset the module, you can install the other stream.)�progTFz7{prog} will only download packages for the transaction.ZtestzP{prog} will only download packages, install gpg keys, and check the transaction.zOperation aborted.zNothing to do.NzDownloading Packages:zError downloading packages:z %sr���� zTransaction failed)Ar���r9���ZWITH_MODULESrC���Zmodule_stream_switch�dictZ_moduleContainerZgetSwitchedStreamsrA���r ���r?����util� MAIN_PROG� exceptions�ErrorZtransactionr���Zlist_transactionr=����info�actionZFORWARD_ACTIONS�appendr���ZBACKWARD_ACTIONSZ_tsZreportRemoveSizeZreportDownloadSizeZ isChangedZ_history�group�env�downloadonly�MAIN_PROG_UPPERZtsflags� _promptWanted�assumeno�userconfirmr���Zdownload_callback_total_cbZdownload_packages�progressZ DownloadError�cliZindent_blockr ���r3����gpgsigcheck� isinstancer���ZCliTransactionDisplay�listrD���rB����do_transaction�history�oldZdbZRPMTransactionZ_trans�joinZpost_transaction_output�state�libdnfZTransactionItemState_ERROR)rF���Zdisplayr@����msgZtransZpkg_strZinstall_pkgsZrmpkgsZinstall_onlyZtsiZtotal_cb�eZspecificZerrstr�tid)rG���r���r���r^�������s����� zBaseCli.do_transactionc������� ���������s��g�}x�|D�]�}��j�|�\}}|dkr(q q |dkrĈ�jjo@��jj�}tj�sVtjj���rl|�rltjj t d�����fdd�}y��j||��W�q��tjj tfk r��}�z|j t|���W�Y�dd}~X�q�X�q |j |��q W�|r�x|D�]} tj| ��q�W�tjj t d���dS�)a��Perform GPG signature verification on the given packages, installing keys if possible. :param pkgs: a list of package objects to verify the GPG signatures of :raises: Will raise :class:`Error` if there's a problem r���r���zTRefusing to automatically import keys when running unattended. Use "-y" to override.c����������������s �����j�j��S�)N)r���rX���)r,����y�z)rF���r���r����<lambda>$��s����z%BaseCli.gpgsigcheck.<locals>.<lambda>NzGPG check FAILED)Z_sig_check_pkgrC���� assumeyesrW����sys�stdin�isattyr���rM���rN���r ���Z_get_key_for_package� ValueErrorrQ����strr=����critical) rF���r8���Zerror_messages�po�result�errmsgZay�fnre���rd���r���)rF���r���r[�����s&���� " zBaseCli.gpgsigcheckc����������������sX���d��x:|�j�jjd|j�D�]$}|tj�}|rtjj|d����P�qW���fdd�|j D��}|S�)zBReturn list of changelogs for package newer then installed versionNr���r���c����������������s$���g�|�]}��d�ks|d���kr|�qS�)N� timestampr���)�.0Zchlog)�newestr���r���� <listcomp>=��s����z-BaseCli.latest_changelogs.<locals>.<listcomp>) Z_rpmconnZreadonly_tsZdbMatchr����rpmZRPMTAG_CHANGELOGTIME�datetimeZdateZ fromtimestamp� changelogs)rF����packageZmiZchangelogtimesZchlogsr���)rw���r����latest_changelogs3��s���� zBaseCli.latest_changelogsc�������������C���s4���d|d�j�d�tjj|d��tjj|d��f�}|S�)z*Return changelog formatted as in spec filez* %s %s %s ru���z%a %b %d %X %YZauthor�text)r+���r���Zi18nr ���)rF���Z changelogZ chlog_strr���r���r����format_changelogA��s ����zBaseCli.format_changelogc�������������C���s����t���}x&|D�]}|j|jp|jg��j|��qW�xdt|j���D�]T}||�}ttd�j dj dd��|D������x$|�j|d��D�]}t|�j|���qzW�q<W�d�S�)NzChangelogs for {}z, c�������������S���s���g�|�]}t�|��qS�r���)ro���)rv���r���r���r���r���rx���Q��s����z,BaseCli.print_changelogs.<locals>.<listcomp>r���) rJ���r����source_namer���rQ����sorted�keysr3���r ���r?���ra���r}���r���)rF���ZpackagesZbysrpm�pr����Zbin_packagesZchlr���r���r����print_changelogsI��s���� "zBaseCli.print_changelogsTFc���������� ���C���sR��|�j�d||d�}|�jjs |�jjr@|�j�d||d�}|j|_|j|_|�rDt|�j|�}t|j�dkr�i�}|�jj j d�} | r�x>t|j�D�]0} | j��}t jj|�r�| j��r�| || j| jf<�q�W�|�jj}|�jj} |�jj|jdd|||| d�d ��|r�|�j|j��t|j�dk�rDttd ���x0t|jtjd�d�D�]}|�jj|d|d���q(W�|j�pP|jS�) z?Check updates matching given *patterns* in selected repository.Zupgrades)�reponamer%���r���r7���r���r]���)�=znot in)Z outputType�highlight_nar(����highlight_modeszObsoleting Packages)�key)r(���)�returnPkgListsrC���r%����verboser&���r)���r���r���r#���r6����MODEr����ZlocalPkg�os�path�existsZverifyLocalPkgr���r����color_update_local�color_update_remote�listPkgsr����r3���r ����operator� itemgetter�updatesObsoletesList)rF����patternsr����Zprint_r{���r'���Ztyplr(���� local_pkgs� highlightrq���Zlocal�cul�cur�obtupr���r���r���� check_updatesU��s:���� zBaseCli.check_updatesc�������������C���sr���|�j�j��}t|�dkr |�j���nx|D�]}|�j|��q&W�|�j�j��|�}|dkrn|�j�j���rntd�}tjj|��dS�)ab�� Upgrade or downgrade packages to match the latest versions available in the enabled repositories. :return: (exit_code, [ errors ]) exit_code is:: 0 = we're done, exit 1 = we've errored, exit with error string 2 = we've got work yet to do, onto the next stage r���z4No packages marked for distribution synchronization.N) Z_goalZ req_lengthr���Zdistro_syncZreq_has_distupgrade_allr ���r���rM���rN���)rF���ZuserlistZoldcount�pkg_specZcntrd���r���r���r����distro_sync_userlist{��s���� zBaseCli.distro_sync_userlistc������� ������C���sJ��d}xf|D�]^}y|�j�||d��d}W�q �tjjk rf�}�z"tjtd�|�jjj |j ���W�Y�dd}~X�q X�q W�x�|D�]�}y|�j||d��d}W�qr�tjjk r��}�z$td�} tj| |�jjj |���W�Y�dd}~X�qr�tjj k �r�}�z"tjtd�|�jjj |j���W�Y�dd}~X�qr�tjjk �r*���Y�qrX�qrW�|�sFtjjtd���dS�) aa��Attempt to take the user specified list of packages or wildcards and downgrade them. If a complete version number is specified, attempt to downgrade them to the specified version :param specs: a list of names or wildcards specifying packages to downgrade :param file_pkgs: a list of pkg objects from local files F)�strictTzNo match for argument: %sNzNo package %s available.z6Packages for argument %s available, but not installed.z!No packages marked for downgrade.)Zpackage_downgrader���rM���ZMarkingErrorr=���rO���r ���r���r6���r7����locationZdowngrade_toZPackageNotFoundErrorZPackagesNotInstalledErrorr����rN���) rF���ZspecsZ file_pkgsr����rr���r���re����arg�errrd���r���r���r���� downgradePkgs���s,���� ( & " zBaseCli.downgradePkgs�allc�������!������C���sD��y$|�j�jjd�}|�j||||d�}W�n0�tjjk rT�}�zdt|�gfS�d}~X��n�X�i�}i�} i�} d}|dkrzt|�j�|�}|r�|j r�xB|j |j�|j�D�],}|j |jf} | |ks�||| �kr�||| <�q�W�|o�|j�rx8|jD�].}|j |jf} | | k�s|| | �kr�|| | <�q�W�|�rP|j�rPx2t|j�D�]$}|jtjk�r(|| |j |jf<��q(W�|�jj}|�jj}|�jj}|�jj}|�j�j|j td�|||||||d�d�}|�jj}|�jj}|�jj}|�jj }|�j�j|jtd �|| |||||d �d�}|�j�j|j!td�||d�}|�j�j|j"td �||d�}|�jj#}|�jj$}|�j�j|jtd�|| |||d�d�}t%|j&�dk�r�|dk�r�t%|j&�}t'td���xLt|j(t)j*d�d�D�]}|�j�j+|d|d���q�W�n|�j�j|j&td�||d�}|�j�j|j,td�||d�} t%|��r@| dk�r@|dk�r@|dk�r@|dk�r@|dk�r@|dk�r@|dk�r@tjjtd���dS�)zJOutput selection *pkgnarrow* of packages matching *patterns* and *repoid*.r7���)�installed_availabler����r���Nr]���zInstalled Packages)�>�<r����znot in)r����r(���r����zAvailable Packages)r����r����r����znot inzAutoremove Packages)r(���zExtra PackageszAvailable Upgrades)r����znot inr���zObsoleting Packages)r����r%���zRecently Added PackageszNo matching Packages to list)-r���r6���r����r����r���rM���rN���ro���r)���r����hidden_available�reinstall_availableZ old_availabler���r���r ����hidden_installedr#���r����r�����hawkeyZSYSTEM_REPO_NAMErC���Zcolor_list_installed_olderZcolor_list_installed_newerZcolor_list_installed_reinstallZcolor_list_installed_extrar����r ���Zcolor_list_available_upgradeZcolor_list_available_downgradeZcolor_list_available_reinstallZcolor_list_available_installr"���r!���r����r����r���r%���r3���r&���r����r����r����r$���)!rF����basecmd� pkgnarrowr����r����r����r'���re���Zupdate_pkgsZ inst_pkgsr����r(���r���r����rq���ZclioZclinZclirZclieZripZclauZcladZclarZclaiZrapZraepZrepr����r����ZrupZropr����Zrrapr���r���r����output_packages���s����� FzBaseCli.output_packagesc������� ������C���s����d}d}|r|dkrd}d}n|r2|dkr2d}d}|�j�||d|d�}|�jjrvx(|jD�]}|j�rT|�rT|jj|��qTW�|r�|j|_|j|_|r�g�|_|r�g�|_|S�)a#��Return a :class:`dnf.yum.misc.GenericHolder` object containing lists of package objects that match the given names or wildcards. :param pkgnarrow: a string specifying which types of packages lists to produce, such as updates, installed, available, etc. :param patterns: a list of names or wildcards specifying packages to list :param installed_available: whether the available package list is present as .hidden_available when doing all, available, or installed :param reponame: limit packages list to the given repository :return: a :class:`dnf.yum.misc.GenericHolder` instance with the following lists defined:: available = list of packageObjects installed = list of packageObjects upgrades = tuples of packageObjects (updating, installed) extras = list of packageObjects obsoletes = tuples of packageObjects (obsoleting, installed) recent = list of packageObjects Fr���Tr����r ���)Zignore_caser����) Z_do_package_listsrC����showdupesfromreposr����r���r ���rQ���r����r����) rF���r����r����r����r����Zdone_hidden_availableZdone_hidden_installedr'���r���r���r���r���r���� ��s,����zBaseCli.returnPkgListsc������� ���������s����|�j�j}d|�j�_g�}g�}x4|D�],}tt|��j|�\}}|j|��|j|��qW�x t|�D�]}|�jj|||��qXW�||�j�_|s�t j jtd���dS�)a���Print out a list of packages that provide the given file or feature. This a cli wrapper to the provides methods in the rpmdb and pkgsack. :param args: the name of a file or feature to search for :return: (exit_code, [ errors ]) exit_code is:: 0 = we're done, exit 1 = we've errored, exit with error string 2 = we've got work yet to do, onto the next stage TzNo Matches foundN) rC���r����rD���rB����provides�extendr����r���Zmatchcallback_verboser���rM���rN���r ���) rF����argsZold_sdupZmatchesZused_search_strings�specr1���Zused_search_stringr���)rG���r���r���r����?��s���� zBaseCli.providesc�������������C���s���|�j�jr|�j�j�rdS�dS�)NFT)rC���rj���rW���)rF���r���r���r���rV���^��s����zBaseCli._promptWanted)N)r����NFN)�__name__� __module__�__qualname__�__doc__rE���r^���r[���r}���r���r����r����r����r����r����r����r����rV���� __classcell__r���r���)rG���r���rB�������s���k'&"Y� 1rB���c���������������@���s����e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zddd �Zd dd�Z d!dd�Z d"dd�Zej fdd�Zdd��Zdd��Zdd��Zdd��ZdS�)#�Clic�������������C���s"��||�_�i�|�_d�|�_tjjj��|�_|�jtjj j j��|�jtjj jj ��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj jj��|�jtjj j j!��|�jtjj j"j#��|�jtjj j$j%��|�jtjj j&j'��|�jtjj j(j)��|�jtjj j*j+��|�jtjj j,j-��|�jtjj j.j/��|�jtjj j0j1��|�jtjj j2j3��|�jtjj j4j5��|�jtjj j6j7��|�jtjj j8��|�jtjj j9��|�jtjj j:��|�jtjj j;��|�jtjj j<��|�jtjj j=��d�S�)N)>r9����cli_commands�commandr���rZ���ZdemandZDemandSheet�demands�register_commandZcommands�aliasZAliasCommandr"���ZAutoremoveCommandZcheckZCheckCommandZcleanZCleanCommandZ distrosyncZDistroSyncCommandZdeplistZDeplistCommandZ downgradeZDowngradeCommandrR���ZGroupCommandr_���ZHistoryCommandZinstallZInstallCommandZ makecacheZMakeCacheCommandZmarkZMarkCommand�moduleZ ModuleCommandZ reinstallZReinstallCommand�removeZ RemoveCommand�repolistZRepoListCommandZ repoqueryZRepoQueryCommand�searchZ SearchCommand�shellZShellCommandZswapZSwapCommandZ updateinfoZUpdateInfoCommandZupgradeZUpgradeCommandZupgrademinimalZUpgradeMinimalCommandZInfoCommandZListCommandZProvidesCommandZCheckUpdateCommandZRepoPkgsCommandZHelpCommand)rF���r9���r���r���r���rE���f��sB����zCli.__init__c�������������C���s��|�j�j|��|jr^xJ|jj��D�]<\}}|�j�jj||�j�j|gd�}|j|��|jj |df��qW�|j r�|jjdd��|jjdd��|j D����t ��}yzxt|jD�]j\}}|�j�jj|�}|s�|�j�jjr�|dkr�td�} tjj| |���|j|��|dk��r�|j���q�|j���q�W�W�nF�tjjk �rP�} �z$tj| ��|�jj���tjd ��W�Y�d�d�} ~ X�nX�x|D�]}tjtd �|���qXW�|�j�jj ��}|d�k�r�|�j�jj!��}x,|D�]$}|�j�jj"|�}|�r�|j#j$����q�W�|�j�j%j&��\} |�j�_'|�j�jj(��j)| ��t%j*|�j�|�j�j%�}|�j�jj(��j+|��d�S�)N)Zbaseurl�enabler����*�disablec�������������S���s���g�|�]}|d�f�qS�)r����r���)rv����rr���r���r���rx������s����z(Cli._configure_repos.<locals>.<listcomp>zUnknown repo: '%s'r���zNo repository match: %s)r����r����),r9���Zread_all_reposZrepofrompathr<����reposZadd_new_reporC����_configure_from_optionsZrepos_edrQ����repo�insertr�����setZget_matchingr����r ���r���rM���Z RepoError�addr����r�����ConfigErrorr=���rp���� optparser� print_helprk����exitr>���Z_repo_persistorZget_expired_reposr�����get�_repo�expirer���Zsetup_progress_callbacksZ_ds_callbackr�����set_progress_barZCliKeyImportZ_set_key_import)rF����optsZlabelr����Z this_repoZnotmatchr����Z operationr����rd���re���Z expired_reposr���ZbarZ key_importr���r���r����_configure_repos���sL���� zCli._configure_reposc�������������C���sv���t�jdjtjjd�tjj��t�jtj j d|�j��t�jtj j d|�jj j��t�jtj j d|�jj j��t�jd|�jj j��d�S�)Nz{prog} version: %s)rH���zCommand: %szInstallroot: %szReleasever: %szcachedir: %s)r=����debugr?���r���rK���rU����const�VERSION�log�logging�DDEBUG� cmdstringr9���rC����installroot� releasever�cachedir)rF���r���r���r����_log_essentials���s���� zCli._log_essentialsc�������������C���s��|�j�}|�jj}|jr.tjj��s.tjjt d���|j rLx|j��D�] }d|_q>W�|j s\|�jjj r�d|�jj_ xn|j��D�]}|jjtjj��qpW�nL|jr�xD|j��D�]}|jj���q�W�n(|js�x |j��D�]}|jjtjj��q�W�|j��r�|�jj|�j�jr�dnd|�j�jd��d�S�)Nz[This command has to be run with superuser privileges (under the root user on most systems).T�autoF)�load_system_repoZload_available_repos)r����r9���r����Z root_userr���rK���Z am_i_rootrM���rN���r ���r{����iter_enabledZload_metadata_other� cacheonlyrC����valuesr����ZsetSyncStrategyr����ZSYNC_ONLY_CACHE�freshest_metadatar����Zfresh_metadataZ SYNC_LAZYZsack_activationZ fill_sackr����Zavailable_repos)rF���r����r����r����r���r���r����_process_demands���s.���� zCli._process_demandsc�������������C���s����|j�}|�jj|�}|dkr~tjtd�|tjd���|�jj j r`tjtd�jtj jtj jd�|��ntjtd�jtj jd���t�||��|�_�tjtjjd|��tjtjjd |��dS�) z,Check that the requested CLI command exists.Nz)No such command: %s. Please use %s --helpr���zLIt could be a {PROG} plugin command, try: "{prog} install 'dnf-command(%s)'")rH���ZPROGzRIt could be a {prog} plugin command, but loading of plugins is currently disabled.)rH���zBase command: %szExtra commands: %s)r����r����r����r=���rp���r ���rk����argvr9���rC���Zpluginsr?���r���rK���rL���rU���r���r����r����r����)rF���r����r����r�����command_clsr���r���r����_parse_commands���s���� zCli._parse_commandsNc������� ������C���s���t�jjj��}|j|�}|dkr*t�jjj��n||�_|�jj|�}|j rpt t�jj��t |�jjj|�j|�jj��tjd��|jr�d|_d|_|jr�t�jj�|_|_yh|jr�|�jjjd|�jjjt�jj��d|�j_|�jjj|��|�j|j ��d|kr�|j!|�jj_!|�jjj"���W�n��t�j#j$t%fk �rF�}�z t&j't(d�|��tjd��W�Y�dd}~X�nX�t)k �r��}�z:d t*t+|��t,|j-�f�}t&j't(d�|��tjd��W�Y�dd}~X�nX�|j.dk �r�|j.|�jj_.|�jjj/��r�|j0dk�r�t&j't(d���tjd��|j1�s�|j2�r|j0dk�rt&j't(d���tjd��|j3dk �r>t4j5t6j7|j3d����|�jj8|�j9d��|�jj:|j;|j<|���|�jj8|�j9d��|j0�s�|�jj=���tjd��||�j_>|�jj?d�|�_@x$|�jj>D�]}|��j@d|�7��_@�q�W�|�jA���y|�jB||��W�n �tCk �r���tjd��Y�nX�|jD�r$|�jj=|�j0��tjd��|�jjE|�j0|�}|jF�rN|jF|�j_Gd|�j_H|jI�r`|jI|�j_I|jJ�rrd|�jj_K|jL�r�d|�jj_L|�j0jM���|�jjN���|�jjO���|�jP|��|�jjQ���|�jjj|��|�j0jR���|�jjj.�r�t�jSjT|�jjj.��|�jjj.|�jjUjV��_W|�jjjXdk�r(|�jjjYjZ|�jjjXd��t[j\d�dk�r�d}x,|�jjUj]��D�]}|j^�rZ�qJd|_^d}�qJW�|�jjj_�s�d|�jj__d}|�r�t&j`t(d���dS�)a��Parse command line arguments, and set up :attr:`self.base.conf` and :attr:`self.cmds`, as well as logger objects in base instance. :param args: a list of command line arguments :param option_parser: a class for parsing cli options Nr���r���r����Tr���zConfig error: %sr���z%s: %s�download�system-upgrade�reposync� modulesynczb--destdir or --downloaddir must be used with --downloadonly or download or system-upgrade command.zconfig-managerz_--enable, --set-enabled and --disable, --set-disabled must be used with config-manager command.�<����mainZpluginr���z%s r����)�colorz%_pkgverify_level� signaturer����Fz�Warning: Enforcing GPG signature check globally as per active RPM security policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message))r����r����r����r����)r����r����)ar���rZ����aliasesZAliasesZresolve� option_parserZOptionParserr����Zparse_main_argsr4���r3���r����r����r;���r9���rC���Zhistory_record_packagesr���rk���r�����quietZ debuglevelZ errorlevelr����Z VERBOSE_LEVELr����Z _set_valueZsystem_cachedirZPRIO_DEFAULTr����r�����_read_conf_filer����r���Z_adjust_conf_optionsrM���r����rn���r=���rp���r ����IOErrorr ���ro����repr�filenameZdestdirrT���r����Zset_enabledZset_disabledZ sleeptimer*���Zsleep�randomZ randrangeZadd_commandsr����Zinit_pluginsZ disablepluginZenablepluginr����r����rH���r����r����r����r����helpZparse_command_argsZallowerasingZ allow_erasingZ_allow_erasingr����ZdebugsolverZdebug_solverr%���Z pre_configureZpre_configure_pluginsZ_activate_persistorr����Zconfigure_plugins� configurerK���Z ensure_dirr����r����Zpkgdirr����r6���Zreinitry���ZexpandMacror����ZgpgcheckZlocalpkg_gpgcheckr>���) rF���r����r����r����r����re���r����Zforcingr����r���r���r���r�������s����� z Cli.configurec�������������C���sB��t�jjd�}|�jj}|jd��|jd��|jd�}|jd�t�jj krht jj|��rht�j jtd�j|���|jt�jjd��|jd�}|jd�t�jj kr�d}|j}|j||jd�d��|d�kr�|jd�kr�t�jj|j�}n|dkr�t�jj|�}|d�k r�||_|jd�k�rtjtd ���xd D�]}|j|���qW�|�jjj|��|���|S�)N�configZconfig_file_pathzConfig file "{}" does not exist)ZpriorityZreposdir�varsdir�/)r���zPUnable to detect release version (use '--releasever' to specify release version)r�����logdir� persistdir)r����r��r��)r���r����ZTimerr9���rC���Z_check_remote_fileZ_search_inside_installrootZ _get_valueZ _get_priorityZPRIO_COMMANDLINEr����r�����isfilerM���r����r ���r?����readZPRIO_MAINCONFIGZ substitutionsZupdate_from_etcr����ry���Zdetect_releaseverr����r=���r>���Zprepend_installroot�_loggingZ_setup_from_dnf_conf)rF���r����ZtimerrC���r����Z from_rootZsubst�optr���r���r���r�������s6���� zCli._read_conf_file�eqc�������������C���s����|dkr|dkrdS�g�}|j�s"|r,|jd��|js6|r@|jd��|jsJ|rT|jd��|js^|rh|jd��|�jj|||j|j|j |j d��dS�)zz :param opts: :param cmp_type: string supported "eq", "gte" :param all: :return: N�bugfix�enhancement� newpackage�security)�types�advisory�bugzilla�cves�severity)r ��rQ���r ��r��r��r9���Zadd_security_filtersr��r��r��r��)rF���r����Zcmp_typer����r ��r���r���r���� _populate_update_security_filter���s���� z$Cli._populate_update_security_filterc�������������C���s4���|dk r|�j�jjj|��|dk r0|�j�jjj|��dS�)z� Change minimal logger level for terminal output to stdout and stderr according to specific command requirements @param stdout: logging.INFO, logging.WARNING, ... @param stderr:logging.INFO, logging.WARNING, ... N)r9���r��Zstdout_handlerZsetLevelZstderr_handler)rF����stdout�stderrr���r���r����redirect_logger���s����zCli.redirect_loggerc�������������C���s.���t�jjj|�}||�jj_|�jjj��j|��d�S�)N) r���rZ���rY���ZMultiFileProgressMeterr9���r���r����r����r����)rF���ZforY���r���r���r����redirect_repo_progress���s���� zCli.redirect_repo_progressc�������������C���s����|�j�jj��}|d�krd�S�|�j�jj��j|jd�}|j��}|jdd��|}x|D�]}||krL|}qLW�||kr�td|���td|���d�S�)N)r����r��)Z advisory_typez,Security: %s is an installed security updatez-Security: %s is the currently running version)r9���r/���Zget_running_kernelr1���r2���r���r���r3���)rF���Zkernel�qZikpkgr���r���r���r����_check_running_kernel���s���� zCli._check_running_kernelc�������������C���s*���t�|�jj����tjjtdj||����d�S�)Nz)argument {}: not allowed with argument {})r3���r����Zprint_usager���rM���rN���r ���r?���)rF���Zoption_string_1Zoption_string_2r���r���r����_option_conflict���s����zCli._option_conflictc�������������C���s<���x6|j�D�],}||�jkr*tjjtd�|���||�j|<�qW�dS�)zRegister a Command. :apizCommand "%s" already definedN)r����r����r���rM���r����r ���)rF���r����r���r���r���r���r�������s���� zCli.register_commandc�������������C���s����|�j����|�jjjr8tjtd�djtt |�jjj������|�jjj rhtjtd�djtt |�jjj ������xx|�jjj��D�]h}|jr�tjtd�|j �d�djtt |j������|j rvtjtd�|j �d�djtt |j ������qvW�|�jj��S�)a2��Call the base command, and pass it the extended commands or arguments. :return: (exit_code, [ errors ]) exit_code is:: 0 = we're done, exit 1 = we've errored, exit with error string 2 = we've got work yet to do, onto the next stage zExcludes in dnf.conf: z, zIncludes in dnf.conf: zExcludes in repo z: zIncludes in repo )r����r9���rC���Zexcludepkgsr=���r����r ���ra���r����r����Zincludepkgsr����r�����idr�����run)rF���r����r���r���r���r����s���� " "(,zCli.run)N)N)r��N)NN)r����r����r����rE���r����r����r����r����r����r����r��r��rk���r��r��r��r��r����r��r���r���r���r���r����e��s���$3 � - r����)r���)Or����Z __future__r���r���r����collections.abcr����ImportError�collectionsrz���r����r����r����r����ry���rk���r*���r����Zlibdnf.transactionrc���r���r���Zdnf.clir���Zdnf.i18nr ���r ���r���Zdnf.cli.aliasesZdnf.cli.commandsZdnf.cli.commands.aliasZdnf.cli.commands.autoremoveZdnf.cli.commands.checkZdnf.cli.commands.cleanZdnf.cli.commands.deplistZdnf.cli.commands.distrosyncZdnf.cli.commands.downgradeZdnf.cli.commands.groupZdnf.cli.commands.historyZdnf.cli.commands.installZdnf.cli.commands.makecacheZdnf.cli.commands.markZdnf.cli.commands.moduleZdnf.cli.commands.reinstallZdnf.cli.commands.removeZdnf.cli.commands.repolistZdnf.cli.commands.repoqueryZdnf.cli.commands.searchZdnf.cli.commands.shellZdnf.cli.commands.swapZdnf.cli.commands.updateinfoZdnf.cli.commands.upgradeZdnf.cli.commands.upgrademinimalZdnf.cli.demandZdnf.cli.formatZdnf.cli.option_parserZdnf.confZdnf.conf.substitutionsZ dnf.constZdnf.db.historyZdnf.exceptionsZdnf.loggingZ dnf.persistorZ dnf.pluginZdnf.rpmZdnf.sackZdnf.transactionZdnf.utilZdnf.yum.miscZ getLoggerr=���r���r)���r;���rA���ZBaserB����objectr����r���r���r���r����<module>���s���� ���O