mò á¸Ec@sîdZdkZdkZdkZdkZdkZdklZdk l Z dk l Z d„Z de fd„ƒYZdefd „ƒYZdd „Zd „Zed jo9eiƒd djoeieieƒneƒndS(s zopectl -- control Zope using zdaemon. Usage: zopectl [options] [action [arguments]] Options: -h/--help -- print usage message and exit -b/--backoff-limit SECONDS -- set backoff limit to SECONDS (default 10) -d/--daemon -- run as a proper daemon; fork a subprocess, close files etc. -f/--forever -- run forever (by default, exit when backoff limit is exceeded) -h/--help -- print this usage message and exit -i/--interactive -- start an interactive shell after executing commands -l/--logfile -- log file to be read by logtail command -u/--user -- run the daemon manager program as this user (or numeric id) -m/--umask -- provide octal umask for files created by the managed process action [arguments] -- see below Actions are commands like "start", "stop" and "status". If -i is specified or no action is specified on the command line, a "shell" interpreting actions typed interactively is started (unless the configuration option default_to_interactive is set to false). Use the action "help" to find out about available actions. N(sZDCmd(s ZDOptions(sFileHandlerFactorycCs |iƒS(N(targtsplit(R((t4/data/zmath/zope/lib/python/Zope2/Startup/zopectl.pyt string_list2stZopeCtlOptionscBsZtZdZdZdZeiiei i ƒZ dZ e ZZe Zd„Zd„ZRS(sÐZope controller options. After initialization, this should look very much like a zdaemon.zdctl.ZDCtlOptions instance. Many of the attributes are initialized from different sources, however. itzopectlszopeschema.xmlc Cs0ti|ƒ|idddddtƒ|idddd td d ƒ|id d dd ddd dƒ|iddddddd dƒ|iddd dƒ|iddddddƒ|iddd dƒ|iddddƒ|iddd d!ƒ|id"d#d d$ƒ|id%d&d'd(ƒdS()Ntprogramsrunner.programsp:sprogram=thandlert backofflimitsrunner.backoff_limitsb:sbackoff-limit=tdefaulti tdaemons runner.daemontdtflagitforeversrunner.forevertfit hang_aroundsrunner.hang_aroundt interactivetitdefault_to_interactivesrunner.default_to_interactivetlogfilesl:slogfile=tusers runner.usersu:suser=tprompts runner.promptszopectl>tumasks runner.umasksm:sumask=(t ZDOptionst__init__tselftaddRtinttNone(R((RRHs    "  c Os<ti|||Ž|idj oÙdk}yt|iƒ}Wn]t j oQy|i |iƒ}Wn't j o|id|iƒnX|d}n?Xy|i|ƒ}Wn't j o|id|iƒnX|d}||_ ||_n|i}|i|_|i|_|io |iio|ii|_n"tii|iddƒg|_tii|idƒ|_ti|_tiitiit i!ƒdƒ|_"d dg|_#|i$djoc|i%dj oSxP|i%i&D]>}t(|t)ƒo(|i*i|_$|i$d joPq0qòqòWndS( Nsusername %r not foundisuid %r not founditbintrunzopet zopectlsockszdrun.pyitSTDERRtSTDOUT(R R!(+RtrealizeRtargstkwRRtpwdRtuidt ValueErrortgetpwnamtpwrectKeyErrortusagetgetpwuidtgidt configroottconfigt instancehomet directoryt clienthometrunnerRtostpathtjointsocknametsyst executabletpythontdirnametzdaemont__file__tzdrunt exitcodesRteventlogthandler_factoriesRt isinstancetFileHandlerFactorytsection( RR#R$R&R%R-R)R/R((RR"ZsH       !    (t__name__t __module__t__doc__tpositional_args_allowedRR4R5R;tZope2tStartupR=t schemadirt schemafileRR&R-tlogsectionnameRR"(((RR5s   tZopeCmdcBsztZddd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „ZRS(NicCsŽ|djogSnt|i|ƒ}|djogSn|o|o |g}qŠg}n*|djot |ƒ}n||g}|S(Nt configfile( tnametgetattrRtoptionstvalueRR toptR#tsvaluetstr(RRTRPRUR R#RS((Rt _get_override†s      cCs$tiddƒti||ƒdS(NtZMANAGEDt1(R4tputenvtZDCmdtdo_startRR(RR((RR\šscCs"d||iif}||dS(Ns3%s -c "from Zope2 import configure;configure('%s');s"(R:RRRROtcmdlinetmore(RR:R^R]((Rtget_startup_cmd scCs2|i|iiddƒ}dGHti|ƒdS(Ns -isimport Zope2; app=Zope2.app()sHStarting debugger (the name "app" is bound to the top-level Zope object)(RR_RRR:R]R4tsystem(RRR]((Rtdo_debug§s cCs[ddg|iidd+zti||ƒWd|iiidƒ|iiidƒXdS(Ns-Xs debug-mode=oni(RRRRR[t do_foregroundRtremove(RR((RRb®s cCsdGHdGHdS(Ns7debug -- run the Zope debugger to inspect your databases2 manually using a Python interactive shell((R((Rt help_debug¶scCs|idƒ}|p dGHdSn|d}d|}t|ƒdjo|d}|d|7}n|d|7}|i|i i |ƒ}t i |ƒdS(Nt susage: run