3 ft`@sddlmZddlmZddlmZddlZddlZddlm Z ddl Zddl Z ddl Z ddlZddlZe jdZdZejjedZejjed ZGd d d eZGd d d eZdS))absolute_import)unicode_literals)_N) PRIO_DEFAULTdnfz/etc/dnf/aliases.d/z ALIASES.confz USER.confc@s,eZdZddZeddZeddZdS) AliasesConfigcCs$||_tjj|_|jj|jdS)N)_pathlibdnfconfZ ConfigParser_parserread)selfpathr/usr/lib/python3.6/aliases.py__init__*s zAliasesConfig.__init__c CsHtjjd}y|jt|jjddWntk r>YnX|jS)NTmainenabled) r r OptionBoolsetrr ZgetData IndexErrorgetValue)r optionrrrr/s  zAliasesConfig.enabledcCsVtj}d}|jj|s|Sx4|jj|D]$}|jj||}|sBq*|j||<q*W|S)Naliases) collections OrderedDictr Z hasSectionZoptionsrsplit)r resultZsectionkeyvaluerrrr8s zAliasesConfig.aliasesN)__name__ __module__ __qualname__rpropertyrrrrrrr)s rc@sNeZdZddZddZddZddZdd d Zd d ZddZ ddZ d S)AliasescCsFtj|_d|_d|_|jr(d|_dS|j|js:dS|jdS)NTF)rrrr r_disabled_by_environ _load_main _load_aliases)r rrrrGs zAliases.__init__c Cshtjjd}y|jttjd|jStk r:dSt k rbt j t dtjddSXdS)NTZDNF_DISABLE_ALIASESFz@Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s) r r rrrosenvironrKeyError RuntimeErrorloggerwarningr)r rrrrr%Ws  zAliases._disabled_by_environcCsyt|Stk rB}ztjjtd||fWYdd}~Xn:tk rz}ztjjtd||fWYdd}~XnXdS)NzParsing file "%s" failed: %szCannot read file "%s": %s)rr+r exceptions ConfigErrorrIOError)r rerrr _load_confds"zAliases._load_confcCsVy|jt|_|jj|_Wn6tjjk rP}ztjt d|WYdd}~XnXdS)NzConfig error: %s) r2ALIASES_CONF_PATHr rrr.r/r,debugr)r r1rrrr&ns  zAliases._load_mainNcCs|dkr.y |j}Wntjjk r,dSXxf|D]^}y"|j|}|jrX|jj|jWq4tjjk r}ztj t d|WYdd}~Xq4Xq4WdS)NzConfig error: %s) _dropin_dir_filenamesrr.r/r2rrupdater,r-r)r filenamesfilenamer r1rrrr'us   zAliases._load_aliasescstjjttjjtgfdd}g}yPtjjts@tjtx4ttj tD]"}||r^qP|j tjj t|qPWWn2t t fk r}ztjj|WYdd}~XnXtjjtr|j t|S)Ncs|kp|jdp|jd S)N..conf.CONF)r:r;) startswithendswith)r8)ignored_filenamesrr_ignore_filenames z7Aliases._dropin_dir_filenames.._ignore_filename)r(rbasenamer3ALIASES_USER_PATHexistsALIASES_DROPIN_DIRmkdirsortedlistdirappendjoinr0OSErrorrr.r/)r r?r7fnr1r)r>rr5s       zAliases._dropin_dir_filenamescs:gg_fddfdd|}j|S)NcsNd}x&|D]}|r |ddkr P|d7}q Wj|d|7_||dS)Nr-)prefix_options)argsZnumarg)r rr store_prefixs  z&Aliases._resolve..store_prefixc s|}| s*|djks*|djdrry.j|djdrV|ddd|d<Wntk rlYnX|S|dkrtjjtdj|dj|d}|r||ddS|ddSdS)Nr\rLz"Aliases contain infinite recursion) rr<poprrr.ErrorrrG)rNsuffixZcurrent_alias_result)r stackrP subresolverrrVs&  z$Aliases._resolve..subresolve)rM)r rNrTr)r rUrPrVr_resolves  zAliases._resolvecCsP|jrLy|j|}Wn6tjjk rJ}ztjtd|WYdd}~XnX|S)Nz%s, using original arguments.)rrWrr.rSr,errorr)r rNr1rrrresolves "zAliases.resolve)N) r r!r"rr%r2r&r'r5rWrYrrrrr$Fs   /r$)Z __future__rrZdnf.i18nrrZdnf.clirZdnf.conf.configrZdnf.exceptionsZ libdnf.confr Zloggingr(Zos.pathZ getLoggerr,rCrrHr3rAobjectrr$rrrrs