
    	^c                         d dl Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZ ddlmZmZ 	 	 	 	 	 	 ddZej        ej        ej        d	Zd
 Zd Zd ZdS )    N   )_)open)	chgservercmdutilcommandservererrorhgwebpycompatutil)procutilurlutilFc                 ~    i } d         r{ d         D ]r}|                     d          r|dd         |d<   %|                     d          r|dd         |d<   H|d	k    r$t          j        t          d
          |z            st          j        r@ d         r7d|v r2t          j                            |d                   rt          j
                                         t          j                                         t          j        |d         t          j        t          j        z  t          j        z            }		 t          j        |	t          j
                                                   t          j        |	t          j                                                   t          j        |	           n# t          j        |	           w xY w fd}
 d         rމ d         st	          j        d          \  }t          j        |           	 |s(t          j                    t          j        dd         z   }|                    dz             t1          dt3          |                    D ]G}||                              d          r||=  n&||                              d          r
|||dz   =  nHfd}t          j        ||          }|dk     rt          j        rlt          j                                      rMt          d          5 }|D ]!}t          j                            |           "	 ddd           n# 1 swxY w Y   t          j        t          d                     |
|           t9          j                   n# t9          j                   w xY w|r ||          S dS |r
 |              d         s |
t          j                                d         r5	 t          j                     n# t@          $ r Y nw xY wd|v rt          j!        |d                    t          j"                     t          j
                                         t          j                                         t          j        t          j#        t          j$                  }|}|r:t          j        |t          j$        t          j%        z  t          j        z  d          }t          j        |t          j&                                                   t          j        |t          j
                                                   t          j        |t          j                                                   t          j&                                        t          j
                                        t          j                                        f}||vrt          j        |           |r||vrt          j        |           d|v rt          j'        |d                    |r
 |            S dS )zRun a command as a service.s   daemon_postexecs   unlink:   Ns   unlinks   chdir:   s   chdirs   nones'   invalid value for --daemon-postexec: %sc                     d         rKrd}nd}t          d         |          }|                    d| z             |                                 d S d S )Ns   pid_files   abs   wbs   %d
)r   writeclose)pidmodefp	appendpidoptss      2/usr/lib/python3/dist-packages/mercurial/server.pywritepidzrunservice.<locals>.writepidK   si     	 d;'..BHHWs]###HHJJJJJ	 	    s   daemons   hg-service-)prefixr   s   --daemon-postexec=unlink:%ss   --cwd=s   --cwd   c                  D    t           j                                        S )N)ospathexists)lockpaths   r   condfnzrunservice.<locals>.condfng   s    7>>(3333r   r   s   rbs   child process failed to starti  )(
startswithr	   Abortr   r   	iswindowsr    r!   r"   r   stdoutflushstderrr   O_WRONLYO_APPENDO_BINARYdup2filenor   mkstemphgcmdsysargvappendrangelenrundetachedr   r   	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   
runservicerQ      sX    L 	+, 	 	Dz** *.qrr(Y''++ )-abbX&&k@AADH   !  d#56 $$#*
 *
$ O!!###O!!###Y'r{)BR[)P BHO2244555HO2244555      I $t$67 $#+>BBB
	% B".**X-=abb-AANN9HDEEE 1c'll++  1:((33 
EQZ**844 AE	*E4 4 4 4 4 &w77CQww % 8"'..*B*B 8h.. 8#$' 8 8D$O11$777788 8 8 8 8 8 8 8 8 8 8 8 8 8 8 k!$D"E"EFFFHSMMMN8$$$$DN8$$$$ 	8C== F 	? $""### "/	IKKKK 	 	 	D	 |##H\(+,,,RY//	 	RZ/"+=u I 	--//000
	8?1133444
	8?1133444N!!##O""$$O""$$

 HV 	 y--HY $$Il9-... uww sP   A"F= =GDN %MN MN M/N N1=P 
PP)s   chgunixs   pipes   unixc                     |d         }	 t           |         }n2# t          $ r% t          j        t	          d          |z            w xY wt          j        | |            || ||          S )N	   cmdservers   unknown mode %s)_cmdservicemapKeyErrorr	   r&   r   r   setuplogging)uirepor   r   	servicefns        r   _createcmdservicerZ      s}    D8"4(		 8 8 8k!.//$67778r4(((9Rt$$$s	    /Ac                    |                     d          r*t          j        |                     d                    |d<   | h}|r)|j        }|                    |j        |j        g           n| }|                     d          p|                     d          }|rx|                     d          r!t          j        t          d                    | 	                                }|
                    |dg           |                    |           n@|                     d          r)| }|r$t                      }t          j        |d|           n| }d	}|                                D ]:}|                     |d          }	|	d
v r|D ]}
|
                    d||	d           ;t#          j        |||          }t#          j        |||          S )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updaterW   r	   r&   r   copy
readconfigadddictr   addwebdirpathsplit	setconfigr
   	createapphttpservice)rW   rX   r   alluisr_   webconfservuioptlistovaluapps               r   _createhgwebservicerr      s   xx ;(9(9::WTF t{DG,----hh{##?txx'?'?G 88K   	O+a LMMNNN 'VH555

6	+		 	  	6ffG!$W555	4  ]]__ 2 2hhq#+ 	2 	2AKK31111	2 /&$
0
0CVS$///r   c                 V    |d         rt          | ||          S t          | ||          S )NrS   )rZ   rr   )rW   rX   r   s      r   createservicert      s3    L 3 T4000"2tT222r   )NNNNNF)r    i18nr   r   r    r   r   r   r	   r
   r   utilsr   r   rQ   chgunixservicepipeserviceunixforkingservicerT   rZ   rr   rt    r   r   <module>r|      s;   
			                                     
H H H HX (&- % % %,0 ,0 ,0^3 3 3 3 3r   