ó ë’Sc@€s:ddlmZddlZddlZddlZddlmZddlZddlZddl Z ddl m Z ddl m Z ddl mZmZmZddlmZdd lmZd efd „ƒYZd efd „ƒYZdefd„ƒYZd„Zdd„Zd„Zd„Zd„ZdS(iÿÿÿÿ(twith_statementN(tStringIO(thook(tFLAVORS(tdbtcustomt structure(tformati(tsharet InvalidCommitcB€seZRS((t__name__t __module__(((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR stformat_handlercB€s8eZd„Zdd„Zd„Zd„Zd„ZRS(cC€s(||_||_||_t|_dS(N(tcattcwdt is_topleveltFalset saw_parent(tselfR RR((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyt__init__s   cC€sf|dk rVtj|ƒ}tj|ƒ}|dkrF|j|ƒqV|j|ƒntƒ|_dS(N(tNoneRt get_elementt create_childt set_parenttsett present_props(Rtetparenttparetelm((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyt start_elements  cC€sItj|ƒ}x3|jƒD]%}||jkr|j|ƒqqWdS(s&Remove any props that weren't present.N(RRt list_propsRt remove_prop(RRRtpname((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyt end_element$scC€s"|dkrŠ|js(td|ƒ‚ntj|ƒ}tj|ƒ}|dkrd|j|ƒ}n |j|ƒ|jdƒt|_ n”|jr¶|j r¶td||fƒ‚n|j j |ƒt |t jƒrí|j}|j}n|jdƒ}d}tj|ƒj|||ƒdS(Nuparents0'parent' specified in non-toplevel element '%s'!utoplevels?'parent' not specified at start of toplevel element %s/%s.yaml!sutf-8tcreole(RR RRRRRt set_orgmodetTrueRRtaddt isinstanceRtIncludetexttvaltencodetset_prop(RRtptcontentsRRtfmt((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pytprop+s*        cC€s?y#|jtjj|j|ƒƒSWntjk r:dSXdS(N(R tostpathtjoinRtpysvnt ClientErrorR(RR2((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyt get_includeEs#N(R R RRRR"R0R6(((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR s    t prop_handlercB€s&eZdd„Zd„Zd„ZRS(cC€sA|dkst‚tj|ƒ}|dkr=tj|ƒndS(N(RtAssertionErrorRtget_propt create_prop(RR-RR0((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyRMs cC€sdS(N((RR-((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR"SscC€s0ttj|ƒd|ƒtj||ƒƒdS(Ntset_(tgetattrRR9Rtinterpret_as_prop(RR-taR.((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR0VsN(R R RRR"R0(((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR7Ls  c€s‡fd†}|S(Nc€smddˆ|g}tj|dtjdtjƒ}|jƒ\}}|jdkrit|j|ƒ‚n|S(NtsvnlookR tstdouttstderri(t subprocesstPopentPIPEt communicatet returncodetEnvironmentError(R2tcmdR-toutterr(trepos(sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR [s ((RKR ((RKsY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pytmake_svnlook_catZsc€st‡‡fd†}|S(Nc€s¿ddˆg}ˆdk r.|dˆg7}n||dg7}|rT|jdƒntj|dtjdtjƒ}|jƒ\}}|jdkr«t|j|ƒ‚nd „|jƒDƒS( NR?ttrees-ts --full-pathss--non-recursiveR@RAics€s|]}t|dƒVqdS(sutf-8N(tunicode(t.0R-((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pys rs( RtappendRBRCRDRERFRGtsplit(R2t non_recursiveRHR-RIRJ(RKttransid(sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyRMfs  (R(RKRSRM((RKRSsY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pytmake_svnlook_treees cc€sAx:d|kr<|jddƒ\}}tj|IJ|VqWdS(Nt/i(trsplittsysRA(R2tchopped((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pytprefixesus c €s…tjdIJtj||ƒ‰ˆjdƒ}ˆjdƒ}|jdƒrPdStˆjƒ|d‡fd†dt||ƒƒdS(Ns Starting...s svn:authorssvn:logsWeb EditR c€s ˆj|ƒS(N(R (tf(ttrans(sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyt‰sRM( RWRAR4t Transactiont revpropgett startswitht apply_changestchangedRT(RKRStusernamet log_message((R[sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyt precommit{s !c%€sy ‡fd†tj_tjƒttjkr:dt_ng}g}tƒ}tƒ}t j ƒ t |ƒ}x |D]} || \} } } } | t j jkrÇ| dkrx|| ƒD]P}|jdƒrí|d }t j j}n t j j}| |ttf||ÉssConsidering %s %s... (%s)iiþÿÿÿt.tyamlt tpropsiûÿÿÿuObjects"You can't delete the root element.iiýÿÿÿs'Parent '%s' for element '%s' undefined!sRPath '%s' added, but the exising location for this element, '%s', was not removed!unormalsutf-8tinfsDeleting element %s.sFIf %s has no kids, it needs to be in the form %s.yaml, not %s/%s.yaml!isWIf %s has kids and is not toplevel, it needs to be in the form %s/%s.yaml, not %s.yaml!sNo root element Object!(ReRg(ReRg(:tbazsvnRt get_usernameRtmake_svndrivenRtversion_control_hookRRRtbegin_transactiontdictR4t node_kindtdirRktfileR%RRVRRt _elementpathtget_descendantstkeystsortRWRAtlentpopRQR8tProptElementRPR tenameR&tinsertRtcreate_root_elementtremoveR$Rtcodecst getreaderRRtparseR7R R1R2tdirnametedeletetpdeleteR9t get_children(%t orig_changesRbR RMtdelfilestdelpropst needskidst needsnokidstchangestfiltactiontkindttext_modtprop_modtconttckindt delparentRt parent_patht descendantRtneighborR}toldpathsRƒR2tis_defRR!tclstparnametoldpathtcatioRZtnktnnktobject((RbsY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyR`Œs>            5"   !     *      *!                 !   &       ( t __future__RR1RWRBt cStringIORR‡R4RrRtbazbase.flavorsRtbazbaseRRRtbazyamlRtRt ExceptionR R§R R7RLRRTRYRdR`(((sY/afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazsvn/precommit.pyts$$   8