JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/dnf-plugins/__pycache__/config_manager.cpython-39.opt-1.pyc

a

�&c�*�@s�ddlmZddlmZddlmZmZmZddlZddlZddl	Zddl
ZddlZddlZddl
Z
ddlZddlZejjGdd�dejj��Zdd�Ze�d	�Ze�d
�Ze�d�Ze�d�Zd
d�ZdS)�)�absolute_import)�unicode_literals)�_�logger�P_Nc@sReZdZdgZed�jejjd�Z	e
dd��Zdd�Zdd	�Z
d
d�Zdd
�ZdS)�ConfigManagerCommandzconfig-managerz4manage {prog} configuration options and repositories)�progcCs�|jdddtd�d�|jdddtd	�d
�|jdgdd
td�d�|jdddtd�d
�|jdddtd�d
�|��}|jddddtd�d�|jddddtd�d�dS)N�crepo�*�repozrepo to modify)�nargs�metavar�help�--saveF�
store_truez/save the current options (useful with --setopt))�default�actionr�
--add-repo�appendZURLz8add (and enable) the repo from the specified file or url)rrr
r�--dumpz,print current configuration values to stdout�--dump-variableszprint variable values to stdout�
--set-enabled�set_enabledz"enable repos (automatically saves))r�destrr�--set-disabled�set_disabledz#disable repos (automatically saves))�add_argumentr�add_mutually_exclusive_group)�parserZenable_group�r�>/usr/lib/python3.9/site-packages/dnf-plugins/config_manager.py�
set_argparser)s:�������z"ConfigManagerCommand.set_argparsercCs�|jj}d|_|jjgksd|jjsd|jjsd|jjsd|jjsd|jj	sd|jj
�td��
d�gd����|jjgkr~t�td��|jjs�|jj	s�|jjs�|jjr�d|_dd�|jjD�}dd�|D�|j_dS)	NTz.one of the following arguments is required: {}� )rrrrrz--enablerz	--disablez{Warning: --enablerepo/--disablerepo arguments have no meaningwith config manager. Use --set-enabled/--set-disabled instead.cSsg|]}|dkr|�d��qS)�,)�split)�.0�xrrr �
<listcomp>_�z2ConfigManagerCommand.configure.<locals>.<listcomp>cSs"g|]}|D]}|dkr|�qqS)�r)r%Zsublist�itemrrr r'as�)�cli�demandsZavailable_repos�opts�add_repo�save�dump�dump_variablesrrZ	optparser�errorr�format�joinZrepos_edrZwarningZ	root_userr	)�selfr,Z	temp_listrrr �	configureBs4��������zConfigManagerCommand.configurecCs|jjr|��n|��dS)zExecute the util action here.N)r-r.�modify_repo)r5rrr �runds
zConfigManagerCommand.runc	srg�t������fdd�}�jjrf�jjD]�|�d�q,t�jd�r��jj��D]�|�d�qTn(t�jd�r��jj��D]�|�d�q~�r�tj�t	d�d�
�����jj}i}t�jd�rԈjj
rԈjj
}�jj�r�jjj��D]\�}td	�|f�q�jj�rd
�jjv�rv�jj�rJ|�rJ�jj��jjjd
|j|��jj�rvt�jj�d
��t�jj�����s�dS�jj�s��jj�r�d�j_t��D]�}i}�jj�r�d|d
<n�jj�r�d|d
<t�jd��r�jj��D]$\}}t�|j|��r�|�|��q�jj�r<|�r<�jj�|j|j|j|��jj�r�t�jj�d|j��t|����q�dS)z< process --set-enabled, --set-disabled and --setopt options cs0�jj�|�}|s����n|r,��|�dS)N)�baseZreposZget_matching�add�extend)�keyZadd_matching_reposZmatching�Zmatching_repos�nameZnot_matching_repos_idr5rr �match_reposqs
z5ConfigManagerCommand.modify_repo.<locals>.match_reposT�repo_setoptsFzNo matching repo to modify: %s.z, �main_setoptsz%s = %s�mainN�1Zenabled�0zrepo: )�setr-r	�hasattrr@�keys�dnf�
exceptions�Errorrr4r9�confrAr1Z
substitutions�items�printr/Zwrite_raw_configfileZconfig_file_pathr0�outputZ
fmtSectionrr�sorted�fnmatch�id�updateZrepofile)	r5r?ZsbcZmodify�valrZrepo_modify�repoidZsetoptsrr=r r7ksd�
�




z ConfigManagerCommand.modify_repoc
CsT|jjj}d}|jjD�]}tjj�|�jdkr@dt	j
�|�}t�
td�|�|�d�r�t	j
�|�}t	j
�||�}z6|jj|dd�}t�|j|�t	�|d�|��WnBty�}z*|d	7}t�|�WYd
}~qWYd
}~n
d
}~00qt|�}d�tjj|�}t	j
�|d|�}d
|||f}	t||	�sqq|�rPtj� t!dd|���d
S)z process --add-repo option rr)zfile://zAdding repo from: %sz.repo�w+)�mode��Nz$created by {} config-manager from {}z%s.repoz"[%s]
name=%s
baseurl=%s
enabled=1
zConfiguration of repo failedzConfiguration of repos failed)"r9rKZget_reposdirr-r.rH�pycomp�urlparse�scheme�os�path�abspathr�infor�endswith�basenamer4Zurlopen�shutil�copy2r>�chmod�close�IOErrorr2�sanitize_url_to_fsr3�util�	MAIN_PROG�save_to_filerIrJr)
r5Z	myrepodirZerrors_count�urlZdestname�f�erTZreponame�contentrrr r.�s<


$�

�zConfigManagerCommand.add_repoN)�__name__�
__module__�__qualname__�aliasesrr3rHrhriZsummary�staticmethodr!r6r8r7r.rrrr r"s�
"Brc
Cs�zHt|d��*}tj�||�t�|d�Wd�n1s<0YWn<ttfy�}z t�	t
d�||�WYd}~dSd}~00dS)NrUrWz&Could not save repo to repofile %s: %sFT)�openrHrYZ
write_to_filer\rdrf�OSErrorrr2r)�filenamern�fdrmrrr rj�s.
�rjz^\w+:/*(\w+:|www\.)?z[?/:&#|~\*\[\]\(\)\'\\]+z^[,.]*z[,.]*$cCs(zbt�|�r`tjjr&|�d��d�}n:t|t�rB|�d��d�}n
|�d�}t|t	�r`|�d�}Wnt
ttt
fy|Yn0t�d|�}t�d|�}t�d|�}t�d|�}t|�dk�r|dd��d�}dt|d�}t��}|�||d��d��|d|�d|��}d	}t�|d|�S)
z�Return a filename suitable for the filesystem and for repo id

    Strips dangerous and common characters to create a filename we
    can use to store the cache in.
    Zidnazutf-8r)r�N����zE[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.:-])�	RE_SCHEME�matchrHrYZPY3�encode�decode�
isinstance�strZunicode�UnicodeDecodeError�UnicodeEncodeError�UnicodeError�	TypeError�sub�RE_SLASH�RE_BEGIN�RE_FINAL�lenr$�hashlibZsha256rRZ	hexdigest�re)rk�parts�	lastindexZcsumZ
allowed_regexrrr rg�s.



rg)Z
__future__rrZdnfpluginscorerrrrHZdnf.cliZ
dnf.pycompZdnf.utilrPr�r\r�rbZpluginZregister_commandr+ZCommandrrj�compiler{r�r�r�rgrrrr �<module>s(1




Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg