3 ©ft`Ýã@s¶ddlmZddlmZddlmZddlZddlZddlm Z ddl Zddl Z ddl Z ddlZddlZe jdƒZdZejjedƒZejjed ƒZGd d „d eƒZGd d „d eƒZdS)é)Úabsolute_import)Úunicode_literals)Ú_N)Ú PRIO_DEFAULTÚdnfz/etc/dnf/aliases.d/z ALIASES.confz USER.confc@s,eZdZdd„Zedd„ƒZedd„ƒZdS)Ú AliasesConfigcCs$||_tjjƒ|_|jj|jƒdS)N)Ú_pathÚlibdnfÚconfZ ConfigParserÚ_parserÚread)ÚselfÚpath©rú/usr/lib/python3.6/aliases.pyÚ__init__*s zAliasesConfig.__init__c CsHtjjdƒ}y|jt|jjƒddƒWntk r>YnX|jƒS)NTÚmainÚenabled) r r Ú OptionBoolÚsetrr ZgetDataÚ IndexErrorÚgetValue)r Úoptionrrrr/s  zAliasesConfig.enabledcCsVtjƒ}d}|jj|ƒs|Sx4|jj|ƒD]$}|jj||ƒ}|sBq*|jƒ||<q*W|S)NÚaliases)Ú collectionsÚ OrderedDictr Z hasSectionZoptionsrÚsplit)r ÚresultZsectionÚkeyÚvaluerrrr8s zAliasesConfig.aliasesN)Ú__name__Ú __module__Ú __qualname__rÚpropertyrrrrrrr)s rc@sNeZdZdd„Zdd„Zdd„Zdd„Zdd d „Zd d „Zdd„Z dd„Z d S)ÚAliasescCsFtjƒ|_d|_d|_|jƒr(d|_dS|jƒ|js:dS|jƒdS)NTF)rrrr rÚ_disabled_by_environÚ _load_mainÚ _load_aliases)r rrrrGs zAliases.__init__c Cshtjjdƒ}y|jttjdƒ|jƒStk r:dSt k rbt j t dƒtjdƒdSXdS)NTZDNF_DISABLE_ALIASESFz@Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s) r r rrrÚosÚenvironrÚKeyErrorÚ RuntimeErrorÚloggerÚwarningr)r rrrrr%Ws  zAliases._disabled_by_environcCs€yt|ƒStk rB}ztjjtdƒ||fƒ‚WYdd}~Xn:tk rz}ztjjtdƒ||fƒ‚WYdd}~XnXdS)NzParsing file "%s" failed: %szCannot read file "%s": %s)rr+rÚ exceptionsÚ ConfigErrorrÚIOError)r rÚerrrÚ _load_confds"zAliases._load_confcCsVy|jtƒ|_|jj|_Wn6tjjk rP}ztjt dƒ|ƒWYdd}~XnXdS)NzConfig error: %s) r2ÚALIASES_CONF_PATHr rrr.r/r,Údebugr)r r1rrrr&ns  zAliases._load_mainNcCsš|dkr.y |jƒ}Wntjjk r,dSXxf|D]^}y"|j|ƒ}|jrX|jj|jƒWq4tjjk r�}ztj t dƒ|ƒWYdd}~Xq4Xq4WdS)NzConfig error: %s) Ú_dropin_dir_filenamesrr.r/r2rrÚupdater,r-r)r Ú filenamesÚfilenamer r1rrrr'us   zAliases._load_aliasescsÆtjjtƒtjjtƒg‰‡fdd„}g}yPtjjtƒs@tjtƒx4ttj tƒƒD]"}||ƒr^qP|j tjj t|ƒƒqPWWn2t t fk rª}ztjj|ƒ‚WYdd}~XnXtjjtƒrÂ|j tƒ|S)Ncs|ˆkp|jdƒp|jdƒ S)NÚ.ú.confú.CONF)r:r;)Ú startswithÚendswith)r8)Úignored_filenamesrrÚ_ignore_filenameŠs z7Aliases._dropin_dir_filenames.._ignore_filename)r(rÚbasenamer3ÚALIASES_USER_PATHÚexistsÚALIASES_DROPIN_DIRÚmkdirÚsortedÚlistdirÚappendÚjoinr0ÚOSErrorrr.r/)r r?r7Úfnr1r)r>rr5ƒs       zAliases._dropin_dir_filenamescs:g‰gˆ_‡fdd„‰‡‡‡‡fdd„‰ˆ|ƒ}ˆj|S)NcsNd}x&|D]}|r |ddkr P|d7}q Wˆj|d|…7_||d…S)Nrú-é)Úprefix_options)ÚargsZnumÚarg)r rrÚ store_prefix¡s  z&Aliases._resolve..store_prefixc sÖˆ|ƒ}| s*|dˆjks*|djdƒrry.ˆjƒ|djdƒrV|ddd…|d<Wntk rlYnX|S|dˆkrŽtjjtdƒƒ‚ˆj|dƒˆˆj|dƒ}|rÂ||dd…Sˆ|dd…ƒSdS)Nrú\rLz"Aliases contain infinite recursion) rr<Úpoprrr.ÚErrorrrG)rNÚsuffixZcurrent_alias_result)r ÚstackrPÚ subresolverrrV¬s&  z$Aliases._resolve..subresolve)rM)r rNrTr)r rUrPrVrÚ_resolve�s  zAliases._resolvecCsP|jrLy|j|ƒ}Wn6tjjk rJ}ztjtdƒ|ƒWYdd}~XnX|S)Nz%s, using original arguments.)rrWrr.rSr,Úerrorr)r rNr1rrrÚresolveÌs "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,rCrrHr3rAÚobjectrr$rrrrÚs