o ]Lb0@sddlmZddlZddlmZddlmZddlmZm Z m Z m Z m Z mZm Z ddlmZmZ      dd d Zeje je jd Zd d ZddZddZdS))absolute_importN)_)open) chgservercmdutil commandservererrorhgwebpycompatutil)procutilurlutilFc si}dr6dD]+}|dr|dd|d<q |dr(|dd|d<q |d kr5ttd |q tjrdrd|vrtj|drt j t j t |dtjtjBtjB} zt| t j t| t j Wt| nt| wfd d } d r;ds;tjdd\} t| z|st tjdd}|dtdt|D]} || dr|| =n|| dr|| | d=nqfdd} t || }|dkr!tjrtjrt d}|D] }t j |qWdn 1swYttd| |Wtntw|r9||SdS|rA|d sL| t drztWn t yaYnwd|vrnt!|dt "t j t j t tj#tj$}|}|rt |tj$tj%BtjBd}t|t j&t|t j t|t j t j&t j t j f}||vrt||r||vrt|d|vrt'|d|r|SdS)zRun a command as a service.sdaemon_postexecsunlink:Nsunlinkschdir:schdirsnones'invalid value for --daemon-postexec: %scsBdrr d}nd}td|}|d||dSdS)Nspid_filesabswbs%d )rwriteclose)pidmodefp) appendpidopts2/usr/lib/python3/dist-packages/mercurial/server.pywritepidLs zrunservice..writepidsdaemons hg-service-)prefixrs--daemon-postexec=unlink:%ss--cwd=s--cwdcstj S)N)ospathexistsr)lockpathrrcondfnhszrunservice..condfnrsrbschild process failed to starti)( startswithr Abortrr iswindowsrrrr stdoutflushstderrrO_WRONLYO_APPENDO_BINARYdup2filenormkstemphgcmdsysargvappendxrangelen rundetachedrr tryunlinkgetpidsetsidAttributeErrorchdir hidewindowdevnullO_RDWRO_CREATstdinunlink)rparentfninitfnrunfnlogfilerunargsr postexecargsinstfdrlockfdir!rloglinenullfd logfilefdstdior)rr rr runservices                          rN)schgunixspipesunixcCsN|d}zt|}Wntyttd|wt||||||S)N cmdserversunknown mode %s)_cmdservicemapKeyErrorr r#rr setuplogging)uireporr servicefnrrr_createcmdservices    rVc Cs$|drt|d|d<|h}|r!|j}||j|jgn|}|dp,|d}|rM|dr;ttd| }|j |dgd| |n|dra|}|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)sectionssUname templates style address port prefix ipv6 accesslog errorlog certificate encoding)NrXsserve)getrgetportbaseuiupdaterSr r#rcopy readconfigadddictr addwebdirpathsplit setconfigr createapp httpservice) rSrTralluisr[webconfservuioptlistovaluapprrr_createhgwebservices@      rncCs |dr t|||St|||S)NrO)rVrn)rSrTrrrr createservices  ro)NNNNNF) __future__rri18nrr rrrrr r r utilsr rrNchgunixservice pipeserviceunixforkingservicerPrVrnrorrrrs*   $    /