3 f0@s\ddlmZddlmZddlmZmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZedZedZedZedZed Zed Zed Zed Zed ZedZedZedZedZdaGdddejZdddgZddgZ dgZ!dddgee e!Z"Gdddej#j$Z%dd Z&d!d"Z'd#d$Z(d%d&Z)d'd(Z*dS)))absolute_import)unicode_literals)_loggerNz-Unable to read version lock configuration: %szLocklist not setzAdding versionlock on:zAdding exclude on:z*Package already locked in equivalent form:zPackage {} is already lockedzPackage {} is already excludedzDeleting versionlock for:zNo package found for:z1Excludes from versionlock plugin were not appliedzCVersionlock plugin: number of lock rules from file "{}" applied: {}zFVersionlock plugin: number of exclude rules from file "{}" applied: {}z,Versionlock plugin: could not parse pattern:cs8eZdZdZfddZddZddZdd ZZS) VersionLock versionlockcs8tt|j||||_||_|jdk r4|jjtdS)N)superr__init__basecliZregister_commandVersionLockCommand)selfr r ) __class__!/usr/lib/python3.6/versionlock.pyr 6s  zVersionLock.__init__cCs4|j|jj}|jdo.|jddo.|jddadS)Nmainlocklist)Z read_configr ZconfZ has_sectionZ has_optionget locklist_fn)r Zcprrrconfig=szVersionLock.configcCs0|jdkrd}n|jjj}|dkr,|jjj}|S)NT)r demandsZplugin_filtering_enabledZ resolving)r Zenabledrrrlocking_enabledCs    zVersionLock.locking_enabledc Cs|jstjtdS|jjjjdd}|jjjjdd}t}ddg}xt D]}d}|r||ddkr||dd}d}t j j |j tjtjtjtjtjgd}|r||d7<ntjdt|qTxF|D]>}|j|jj} |r|j| }n|j|j|j| }| rPqWqTW|dr6tjtjt|d|drVtjtjt|d|r|jjjjt|d} | j|} |j| }|jjjj |d } |j| j|}|j tj!d |r|jjj"|dS) NT)emptyr!)Zformsz%s %s)Z name__glob)Z obsoletes)Z reponame__neq)#rrdebugNO_VERSIONLOCKr sackZqueryfilterset_read_locklistdnfsubjectSubjectZget_nevra_possibilitieshawkeyZ FORM_NEVRAZ FORM_NEVRZFORM_NEVZFORM_NAZ FORM_NAMEerror NEVRA_ERRORZto_queryunionaddname APPLY_EXCLUDEformatr APPLY_LOCKlist differenceZfiltermZSYSTEM_REPO_NAMEZ add_excludes) r Zexcludes_queryZ locked_queryZ locked_namescountpatZexclZpossible_nevrasZnevraZ pat_queryZ all_versionsZother_versionsZobsoletes_queryrrrrLsP              zVersionLock.sack) __name__ __module__ __qualname__r)r rrr __classcell__rr)rrr2s   rexcludezadd-!zadd!deletedelZ blacklistr(clearr-c@s8eZdZd ZedZdZeddZddZ dd Z d S) r rzcontrol package version locksz5[add|exclude|list|delete|clear] []cCs:|jdddtdd|jdddd |jd d d d dS) Nz--rawF store_truez@Use package specifications as they are, do not try to parse them)defaultactionhelp subcommand?z[add|exclude|list|delete|clear])nargsmetavarpackage*z[]) add_argumentr)parserrrr set_argparsers   z VersionLockCommand.set_argparsercCsd|jj_d|jj_dS)NT)r rZsack_activationZavailable_repos)r rrr configures zVersionLockCommand.configurec Csd}|jjr|jjtkr2d}|jjjd|jjnd|jjtkrDd}nR|jjtkr|tdj|jj}t j |t j j ddd}n|jjtkrd}n|jj}|dkrt|jj}xj|D]b\}}|d krt|j|g|jjd d tjtd q||krt j jtj|qtjd t|qWn|dkrt|jj}xn|D]f\}}|d krpt|j|g|jjd dtjtdn,||krt j jtj|ntjd t|q8Wn4|dkrxtD]}t|qWn |dkrtst j jt t!td}WdQRXn|dkrtst j jt t"j#j$t}t%j&|dd\} } t} d} t"j'| ddV} xN| D]F} t(| |jjrtd t)| f| d7} q\| j*| | j*dq\WWdQRX| st"j+| nt"j,| dt"j-| tdS)Nr-r(rr5z@Subcommand '{}' is deprecated. Use 'exclude' subcommand instead.) stacklevelr6Tz # Added lock on %s z%s %sFz # Added exclude on %s rr8wz.tmp)dirsuffixr i).Zoptsr=ALL_CMDSrAinsertEXC_CMDS DEP_EXC_CMDSrr+warningswarnr! exceptionsDeprecationWarningDEL_CMDS_search_locklist_write_locklistr rawtimeZctime ADDING_SPECErrorALREADY_EXCLUDEDrinfo EXISTING_SPECEXCLUDING_SPECALREADY_LOCKEDr printr NO_LOCKLISTopenospathdirnametempfileZmkstempfdopen_match DELETING_SPECwriteunlinkchmodrename)r cmdmsgresultsentryZ entry_cmdr0frhoutZ tmpfilename locked_specsr/entrrrruns|                             zVersionLockCommand.runN)r) r1r2r3aliasesrZsummaryZusage staticmethodrErFryrrrrr s  r cCsg}y`tstjjttt>}x6|jD]*}|jds*|jdkrFq*|j |jq*WWdQRXWn2t k r}ztjjt |WYdd}~XnX|S)N#rI) rr!rUr]rdre readlines startswithstripappendIOError NOT_READABLE)rZllfilelineerrrr s   "r cCsg}d}}t}xl|D]d}d}xH|D]@}d}}t||gr&|}|jdrPdnd}|j||fd}q&W|s|j||fqW|S)NrIFrr5r(T)r rkr~r)rArsfoundr;rwpkgmatchrxrrrrXs   rXcCs@t}x|D]}|r |j|q tjj|} d} |rN| jtjj|dddd} | sf| j|jdddd} | sztdt |fx| D]} |jt | j qWq W|rsH  O [