
    6h                        S SK Jr  S SKrSSKJr  SSKJrJrJrJ	r	J
r
JrJr  SSKJrJr        SS jr\R"                  \R$                  \R&                  S.rS	 rS
 rS rg)    )annotationsN   )_)	chgservercmdutilcommandservererrorhgwebpycompatutil)procutilurlutilc                H  ^ ^^ 0 nT S   (       at  T S    Hk  nUR                  S5      (       a
  USS US'   M#  UR                  S5      (       a
  USS US'   MC  US	:w  d  MK  [        R                  " [        S
5      U-  5      e   [        R
                  (       Ga=  T S   (       Ga2  SU;   Ga+  [        R                  R                  US   5      (       Ga  [        R                  R                  5         [        R                  R                  5         [        R                  " US   [        R                  [        R                  -  [        R                   -  5      n	 [        R"                  " U	[        R                  R%                  5       5        [        R"                  " U	[        R                  R%                  5       5        [        R&                  " U	5        UU 4S jn
T S   (       Ga  T S   (       Gd  [        R(                  " SS9u  nm[        R&                  " U5         U(       d)  [        R*                  " 5       [        R,                  SS -   nUR/                  ST-  5        [1        S[3        U5      5       H@  nX\   R                  S5      (       a  X\	   O%X\   R                  S5      (       d  M9  X\US-   2	   O   U4S jn[        R4                  " X]5      nUS:  a  [        R
                  (       aa  [        R                  R                  T5      (       a=  [        TS5       nU H"  n[        R                  R7                  U5        M$     SSS5        [        R                  " [        S5      5      eU
" U5        [8        R:                  " T5        U(       a  U" U5      $ gU(       a  U" 5         T S   (       d  U
" [        R<                  " 5       5        T S   (       GaZ   [        R>                  " 5         SU;   a  [        RB                  " US   5        [        RD                  " 5         [        R                  R                  5         [        R                  R                  5         [        R                  " [        RF                  [        RH                  5      nUnU(       aH  [        R                  " U[        RH                  [        RJ                  -  [        R                  -  S5      n[        R"                  " U[        RL                  R%                  5       5        [        R"                  " U[        R                  R%                  5       5        [        R"                  " U[        R                  R%                  5       5        [        RL                  R%                  5       [        R                  R%                  5       [        R                  R%                  5       4nUU;  a  [        R&                  " U5        U(       a  UU;  a  [        R&                  " U5        SU;   a  [        RN                  " US   5        U(       a  U" 5       $ g! [        R&                  " U	5        f = f! , (       d  f       GN= f! [8        R:                  " T5        f = f! [@         a     GNf = f)zRun a command as a service.s   daemon_postexecs   unlink:   Ns   unlinks   chdir:   s   chdirs   nones'   invalid value for --daemon-postexec: %sc                   > TS   nU(       a:  SU -  nT(       a  [         R                  " X5        g [         R                  " X5        g g )Ns   pid_files   %d
)r   
appendfile	writefile)pidfilepid_line	appendpidoptss      2/usr/lib/python3/dist-packages/mercurial/server.pywritepidrunservice.<locals>.writepidK   s9    K }H/t.     s   daemons   hg-service-)prefixr   s   --daemon-postexec=unlink:%ss   --cwd=s   --cwd   c                 L   > [         R                  R                  T 5      (       + $ )N)ospathexists)lockpaths   r   condfnrunservice.<locals>.condfnf   s    77>>(333r   r   rbs   child process failed to starti  )(
startswithr	   Abortr   r   	iswindowsr!   r"   r#   r   stdoutflushstderropenO_WRONLYO_APPENDO_BINARYdup2filenoclosemkstemphgcmdsysargvappendrangelenrundetachedwriter   	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$   s   `     `             @r   
runservicerW      s    L+,Dz***.qr(Y'++)-abX&kk@ADH  - d#566$#*
 *
 OO!!#OO!!#Y'r{{)BR[[)PBHOO2245HOO2245/ It$677#++>B
	%"..*X-=-=ab-AANN9HDE 1c'l+:((33
Z**844AE	* ,4 &&w7CQw %%"''..*B*Bh-$'D$OO11$7 %( . kk!$D"EFFSMNN8$C= 	?"#	IIK |#HH\(+,RYY/	RZZ/"++=uI 	--/0
	8??1134
	8??1134NN!!#OO""$OO""$

 HHVy-HHY $IIl9-.w w J .- NN8$  		sK   A&Y "BY8 4A2Y8 &)Y&/Y8 #Z Y#&
Y50Y8 8Z
Z! Z!)s   chgunixs   pipes   unixc                    US   n [         U   n[
        R                  " X5        U" XU5      $ ! [         a#    [        R                  " [	        S5      U-  5      ef = f)N	   cmdservers   unknown mode %s)_cmdservicemapKeyErrorr	   r)   r   r   setuplogging)uirepor   mode	servicefns        r   _createcmdservicera      sc    D8"4(	 r(Rt$$  8kk!./$6778s	   	/ -Ac                   UR                  S5      (       a(  [        R                  " UR                  S5      5      US'   U 1nU(       a4  UR                  nUR	                  UR                  UR
                  /5        OU nUR                  S5      =(       d    UR                  S5      nU(       ah  UR                  S5      (       a  [        R                  " [        S5      5      eU R                  5       nUR                  US/S9  UR                  U5        ODUR                  S5      (       a,  U nU(       a"  [        5       n[        R                  " USU5        OU nS	nUR                  5        H9  nUR                  US5      n	U	S
;   a  M  U H  n
U
R!                  SXS5        M     M;     ["        R$                  " XAU5      n["        R&                  " XkU5      $ )Ns   ports   web_confs   webdir_confs   subreposs)   --web-conf cannot be used with --subreposs   web)sectionsr   sU   name templates style address port prefix ipv6 accesslog errorlog certificate encoding)Nr   s   serve)getr   getportbaseuiupdater]   r	   r)   r   copy
readconfigadddictr   addwebdirpathsplit	setconfigr
   	createapphttpservice)r]   r^   r   alluisrf   webconfservuioptlistovaluapps               r   _createhgwebservicery      s|   xx(9:WTFt{{DGG,-hh{#?txx'?G88K  ++a LMNN 'VH5

6	+		 fG!!$W5	4  ]]_hhq#+AKK1 	  //&
0CV$//r   c                F    US   (       a  [        XU5      $ [        XU5      $ )NrY   )ra   ry   )r]   r^   r   s      r   createservicer{      s$    L 400"2T22r   )NNNNNF)
__future__r   r!   i18nr    r   r   r   r	   r
   r   r   utilsr   r   rW   chgunixservicepipeserviceunixforkingservicerZ   ra   ry   r{    r   r   <module>r      ss    # 	    
GV ((&&--%,0^3r   