³ò KKc@sBddkZddkZddklZddklZddklZddklZddkl Z ddk l Z l Z ddk lZdd klZlZdd klZdd klZdd klZlZd eefd„ƒYZdeefd„ƒYZdeeefd„ƒYZdefd„ƒYZdS(iÿÿÿÿN(tdatetime(t make_option(tStringIO(t ScriptError(t pluralize(terrortlog(tCommand(tPersistentPatchCollectiont!PersistentPatchCollectionDelegate(t StatusServer(tStepSequenceErrorHandler(t QueueEnginetQueueEngineDelegatet AbstractQueuecBs×eZdgZdZdZdZdd„Zd„Zddd„Z d„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zed„Zed„ƒZRS(s$webkit-bot-watchers@googlegroups.comtPasstFailtErrorc CsS|pgtddddddtddƒg}ti|d |id |ƒdS( Ns --no-confirmtactiont store_falsetdesttconfirmtdefaultthelpsJDo not ask the user for confirmation before running the queue. Dangerous!s Run the %stoptions(RtTrueRt__init__tname(tselfRt options_list((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR8s (cCsMy|iii||iƒWn)tj o}tiƒtdƒnXdS(NsFailed to CC watchers.(ttooltbugst add_cc_to_bugtwatcherst Exceptiont tracebackt print_excR(Rtbug_idte((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt _cc_watchers>s  cCs#|iii|i|||ƒdS(N(Rt status_servert update_statusR(Rtmessagetpatcht results_file((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt_update_statusEscCs|i|i|ƒdS(N(R-t _pass_status(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt _did_passHscCs|i|i|ƒdS(N(R-t _fail_status(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt _did_failKscCs'd|i|f}|i||ƒdS(Ns%s: %s(t _error_statusR-(RR+treasonR*((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt _did_errorNscCs d|iS(Ns%s.log(R(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytqueue_log_pathRscCs"tiid|id|dƒS(Ns%s-logss%s.logR%(tostpathtjoinR(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytwork_item_log_pathUscCsytd|i|iiƒifƒ|iio4|iiidƒ}|djot dƒqdntd|iƒdS(Ns2CAUTION: %s will discard all local changes in "%s"s'Are you sure? Type "yes" to continue: tyessUser declined.sRunning WebKit %s.( RRRtscmt checkout_rootRRtusertpromptR(Rtresponse((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytbegin_work_queueXs #  cCstS(N(R(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytshould_continue_work_queue`scCs td‚dS(Nssubclasses must implement(tNotImplementedError(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytnext_work_itemcscCs td‚dS(Nssubclasses must implement(RB(Rt work_item((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytshould_proceed_with_work_itemfscCs td‚dS(Nssubclasses must implement(RB(RRD((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytprocess_work_itemiscCs td‚dS(Nssubclasses must implement(RB(RRDR*((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pythandle_unexpected_errorlscCsV|iiƒg}|d|iiig7}|tt|ƒ7}|iii|ƒdS(Ns--status-host=%s(RR7R(thosttmaptstrt executivetrun_and_throw_if_fail(Rtargstwebkit_patch_args((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytrun_webkit_patchoscCs?tdtdt|ƒƒ|iditt|ƒƒfƒdS(Ns %s in %s [%s]R+s, (RRtlenRR8RIRJ(Rt patch_ids((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt log_progressvscCs(||_||_||i|ƒiƒS(N(RRRtrun(RRRMRtengine((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytexecuteys  cCs,|ii|i|i|dt|iƒƒS(NR+(R(R)RR*Rtoutput(tclsRtstatet script_error((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt_update_status_for_script_error~sN(t__name__t __module__R!R.R0R2tNoneRR'R-R/R1R4R5R9R@RARCRERFRGRORRR RUt classmethodRZ(((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR/s,                 t CommitQueuecBsteZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z e d „ƒZ e d „ƒZRS( s commit-queuecCsti|ƒdS(N(RR(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR…scCsti|ƒdS(N(RR@(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR@ŠscCsk|iiiidtƒ}|p|idƒdSn|ig}|D]}||dqH~ƒ|dS(Ntreject_invalid_patchess Empty queuetidi(RRtqueriestfetch_patches_from_commit_queueRR-R]RR(Rtpatchest_[1]R+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRCs  ,c CsPy |idddddgƒWn)tj o}|iddƒtSnXtS(Nsbuild-and-tests --force-cleans--non-interactives--build-style=boths--quiets&Unabled to successfully build and test(RORR-R]tFalseR(RR&((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt_can_build_and_test–s   cCsT|iiiƒ}|o7td„|ƒ}|iddi|ƒdƒtSntS(NcSsd|S(s"%s"((R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt¡ss2Builders [%s] are red. See http://build.webkit.orgs, ( Rtbuildbottred_core_builders_namesRIR-R8R]RfR(Rtred_builders_names((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt_builders_are_greenžs cCsS|iƒptSn|iƒptSn|iƒptSn|id|ƒtS(Ns Landing patch(RlRfRgR-R(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRE¦s   c CszyK|i|dƒ|iddddddd|d gƒ|i|ƒWn(tj o}|i|ƒ|‚nXdS( NR%sland-attachments --force-cleans--non-interactives --no-updates--parent-command=commit-queues--build-style=boths--quietRa(R'ROR/RR1(RR+R&((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRF°s) cCs|iii|d|ƒdS(NRa(RRtreject_patch_from_commit_queue(RR+R*((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRG¼scCs>|ip|iƒSn|ii|ƒ}d|iƒ|fS(Ns%s Full output: %s(RVtmessage_with_outputR(tresults_url_for_status(Rt status_idRYt results_link((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyt_error_message_for_bugÁs cCsC|i|||ƒ}|ii|dd|i|||ƒƒdS(NR+Ra(RZRRmRr(RWRRXRYRp((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pythandle_script_errorÈs(R[R\RRR@RCRgRlRERFRGt staticmethodRrR^Rs(((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR_ƒs     tAbstractReviewQueuecBskeZd d„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z e d „ƒZ RS( cCsti||ƒdS(N(RR(RR((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRÏscCs|iS(N(R(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytcollection_nameÔscCs|iiiiƒS(N(RRRbt&fetch_attachment_ids_from_review_queue(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pytfetch_potential_patch_ids×scCs |iiS(N(RR((R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR(ÚscCs ti|ƒt|ƒ|_dS(N(RR@Rt_patches(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR@ßs cCs>|iiƒ}|o|iii|ƒSn|idƒdS(Ns Empty queue(RytnextRRtfetch_attachmentR-(Rtpatch_id((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRCãscCs td‚dS(Nssubclasses must implement(RB(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyREéscCs td‚dS(Nssubclasses must implement(RB(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRFìscCst|ƒdS(N(R(RR+R*((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRGïscCst|iƒƒdS(N(RRn(RWRRXRY((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRsôsN(R[R\R]RRvRxR(R@RCRERFRGR^Rs(((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRuÎs         t StyleQueuecBs8eZdZd„Zd„Zd„Zed„ƒZRS(s style-queuecCsti|ƒdS(N(RuR(R((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRûscCs|id|ƒtS(NsChecking style(R-R(RR+((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyREþsc Cs`y1|idddd|dgƒ|i|ƒWn(tj o}|i|ƒ|‚nXdS(Ns check-styles --force-cleans--non-interactives--parent-command=style-queueRa(ROR/RR1(RR+R&((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRFs   cCs‚|i|||ƒ}|iƒdjpdSnd|dd|i|idd ƒf}|ii|dd|d |iƒdS( Nscheck-webkit-styles"Attachment %s did not pass %s: %sR+Rat output_limitiiR%tcci (RZt command_nameRRnRtpost_comment_to_bugR!(RWRRXRYRpR*((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyRs s *(R[R\RRRERFR^Rs(((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyR}ùs    (R#R6RtoptparseRRtwebkitpy.executiveRtwebkitpy.grammarRtwebkitpy.webkit_loggingRRtwebkitpy.multicommandtoolRtwebkitpy.patchcollectionRR twebkitpy.statusserverR twebkitpy.stepsequenceR twebkitpy.queueengineR R RR_RuR}(((sR/usr/local/google/WebKitToT/WebKit/WebKitTools/Scripts/webkitpy/commands/queues.pyss  TK+