o ö]Lb0ã@s¤ddlmZddlZddlmZddlmZddlmZm Z m Z m Z m Z mZm Z ddlmZmZ      dd d „Zeje je jd œZd d „Zdd„Zdd„ZdS)é)Úabsolute_importNé)Ú_)Úopen)Ú chgserverÚcmdutilÚ commandserverÚerrorÚhgwebÚpycompatÚutil)ÚprocutilÚurlutilFc sÖi}ˆdr6ˆdD]+}| d¡r|dd…|d<q | d¡r(|dd…|d<q |d kr5t td ƒ|¡‚q tjr‚ˆdr‚d|vr‚tj |d¡r‚t j   ¡t j   ¡t  |dtjtjBtjB¡} zt | t j  ¡¡t | t j  ¡¡Wt | ¡nt | ¡w‡‡fd d „} ˆd r;ˆds;tjdd\} ‰t | ¡z‹|s®t  ¡tjdd…}| dˆ¡t dt|ƒ¡D]} ||  d¡rË|| =n||  d¡rÛ|| | d…=nq½‡fdd„} t  || ¡}|dkr!tjrtj ˆ¡rt ˆdƒ}|D] }t j  |¡qWdƒn 1swYt tdƒ¡‚| |ƒWt ˆ¡nt ˆ¡w|r9||ƒSdS|rA|ƒˆd sL| t  ¡ƒˆdrãzt ¡Wn t yaYnwd|vrnt !|d¡t  "¡t j   ¡t j   ¡t  tj#tj$¡}|}|r—t  |tj$tj%BtjBd¡}t |t j& ¡¡t |t j  ¡¡t |t j  ¡¡t j& ¡t j  ¡t j  ¡f}||vrÊt |¡|r×||vr×t |¡d|vrãt '|d¡|ré|ƒSdS)zRun a command as a service.sdaemon_postexecsunlink:éNsunlinkschdir:éschdirsnones'invalid value for --daemon-postexec: %scsBˆdrˆr d}nd}tˆd|ƒ}| d|¡| ¡dSdS)Nspid_filesabswbs%d )rÚwriteÚclose)ÚpidÚmodeÚfp)Ú appendpidÚopts©ú2/usr/lib/python3/dist-packages/mercurial/server.pyÚwritepidLs ùzrunservice..writepidsdaemons hg-service-)Úprefixrs--daemon-postexec=unlink:%ss--cwd=s--cwdécstj ˆ¡ S)N)ÚosÚpathÚexistsr)ÚlockpathrrÚcondfnhszrunservice..condfnrsrbschild process failed to starti¶)(Ú startswithr ÚAbortrr Ú iswindowsrrrr ÚstdoutÚflushÚstderrrÚO_WRONLYÚO_APPENDÚO_BINARYÚdup2ÚfilenorÚmkstempÚhgcmdÚsysargvÚappendÚxrangeÚlenÚ rundetachedrr Ú tryunlinkÚgetpidÚsetsidÚAttributeErrorÚchdirÚ hidewindowÚdevnullÚO_RDWRÚO_CREATÚstdinÚunlink)rÚparentfnÚinitfnÚrunfnÚlogfileÚrunargsrÚ postexecargsÚinstÚfdrÚlockfdÚir!rÚlogÚlineÚnullfdÚ logfilefdÚstdior)rr rrÚ runservicesº     ÿÿ ÿ  ÿ  þ    ÿÿ     ÿ   ÿý    ÿrN)schgunixspipesunixcCsN|d}zt|}Wntyt tdƒ|¡‚wt ||¡||||ƒS)Nó cmdserversunknown mode %s)Ú_cmdservicemapÚKeyErrorr r#rrÚ setuplogging)ÚuiÚreporrÚ servicefnrrrÚ_createcmdservice±s  ÿ  rVc Cs$| d¡rt | d¡¡|d<|h}|r!|j}| |j|jg¡n|}| d¡p,| d¡}|rM| d¡r;t tdƒ¡‚|  ¡}|j |dgd|  |¡n| d¡ra|}|r`t ƒ}t  |d|¡n|}d }| ¡D]}| |d¡} | d vrvqi|D] } |  d|| d ¡qxqit |||¡} t || |¡S) Nsportsweb_confs webdir_confssubreposs)--web-conf cannot be used with --subrepossweb)ÚsectionsósUname templates style address port prefix ipv6 accesslog errorlog certificate encoding)NrXsserve)ÚgetrÚgetportÚbaseuiÚupdaterSr r#rÚcopyÚ readconfigÚaddÚdictrÚ addwebdirpathÚsplitÚ setconfigr Ú createappÚ httpservice) rSrTrÚalluisr[ÚwebconfÚservuiÚoptlistÚoÚvalÚuÚapprrrÚ_createhgwebservice»s@    €ÿ  ÿrncCs |dr t|||ƒSt|||ƒS)NrO)rVrn)rSrTrrrrÚ createserviceês  ro)NNNNNF)Ú __future__rrÚi18nrr rÚrrrr r r Úutilsr rrNÚchgunixserviceÚ pipeserviceÚunixforkingservicerPrVrnrorrrrÚs*   $  ù ý /