
    c                         d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ ddlmZ ej        Z G d d	ej        ej                  ZdS )
    N)ElementTree	XMLParser)_)errorpycompatutil)dateutil   )commonc                   j     e Zd ZddZd Zd Zd fd	Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Z xZS )darcs_sourceNc                    t           j                            | ||||           t           j                            | |d           t          j                            t          j                            |d                    st          t          d          |z            t          j
        dd           |                     d                                          d                                         }|dk     r$t          j        t          d	          |z            d
t!                      vr!t          j        t          d                    t          j                            |          | _        d | _        i | _        i | _        i | _        |                                 }|r%|dv rt          t          d          |z            d S | j                            t          d                     d S )N)revss   darcss   _darcss(   %s does not look like a darcs repository)debnames	   --versionr   s   2.1s,   darcs version 2.1 or newer needed (found %r)r   s*   Python ElementTree module is not available)s	   darcs-1.0s   hasheds3   %s repository format is unsupported, please upgrades#   failed to detect repository format!)r   converter_source__init__commandlineospathexistsjoinNoRepor   	checktoolrun0
splitlinesstripr   Abortglobalsrealpathlastrevchangesparentstagsformatuiwarn)selfr%   repotyper   r   versionr$   s          5/usr/lib/python3/dist-packages/hgext/convert/darcs.pyr   zdarcs_source.__init__   s   ((r8T(MMM##D"h777 w~~bgll4;;<< 	PFGG$NOOO84444))L))4466q9??AAV+ABBWL   		))+a MNNOOOG$$T**		  
	D222*  	   32 GLLABBCCCCC    c                    t          j        dt          j                            | j                  z   dz             | _        |                     d| j                  \  }}|                     |           |                     ddd| j                  }d }d }|	                    d	          D ]}| 
                    |                    d
                    }| 
                    |                    dd                    }|                    d          r|dd                                          }n||| j        |<   d }|| j        |<   |g| j        |<   |}g | j        |<   d S )Ns   convert-   -)prefixs   initrepodirs   changesT)
xml_outputsummaryr0   patchhashname s   TAG    )r   mkdtempr   r   basenametmppathrun	checkexitxmlfindallrecodegetfindtext
startswithr   r#   r!   r"   )	r'   outputstatustreetagnamechildeltnoder5   s	            r*   beforezdarcs_source.beforeE   sd   '!1!1$)!<!<<tC
 
 
 '4<@@vxx4ty  
 
 <<(( 
	 
	C;;swwv//D;;s||FB7788Dw'' qrr(..**$%)	'"!$DL#'&DLEE Ur+   c                     | j                             d| j        z             t          j        | j        d           d S )Ns   cleaning up %s
T)ignore_errors)r%   debugr:   shutilrmtreer'   s    r*   afterzdarcs_source.after^   s;    )DL8999dl$777777r+   c                     t          |t                    r|                    d          }t          t          |                               ||          S )Nlatin-1)
isinstancestrencodesuperr   r?   )r'   sencoding	__class__s      r*   r?   zdarcs_source.recodeb   sH    a 	$ ##A\4((//8<<<r+   c                    t                      }t          d          } | j        |fi |}|                    |j        |           |                                 |                     |j                   |                                S )NrS   )rY   )parser)	r   r   _runparsestdoutwaitr<   
returncodegetroot)r'   cmdkwargsetreer\   ps         r*   r=   zdarcs_source.xmlj   s      I...DIc$$V$$AHV,,,	q|$$$}}r+   c                 X   |                      dd| j                  \  }}|                     |           t          j        d|t          j                  }|sd S d                    t          d |                    d          	                    d          D                                 S )N   shows   repor/   s   ^\s*Format:\s*(.*)$   ,c              3   >   K   | ]}|                                 V  d S N)r   ).0fs     r*   	<genexpr>z&darcs_source.format.<locals>.<genexpr>~   s*      JJa		JJJJJJr+   r
   )
r;   r   r<   research	MULTILINEr   sortedgroupsplit)r'   rC   rD   ms       r*   r$   zdarcs_source.formatx   s    '7DIFFvI-vr|DD 	4yyJJ1771::3C3CD3I3IJJJJJKKKr+   c                     g }|                      ddd| j                  \  }}|                     |           |                    d          D ]#}|dd          }|r|                    |           $|S )Nrh   s   filesT)no_directoriesr0      
   )r;   r:   r<   rt   append)r'   manrC   rD   liner   s         r*   manifestzdarcs_source.manifest   s    XdDL " 
 
 	vLL'' 	! 	!D8D !

4   
r+   c                     | j         d          S rk   )r"   rP   s    r*   getheadszdarcs_source.getheads   s    |D!!r+   c                    | j         |         }d}t          j        |                     |                    d                    |          }|                    d          dz   |                    dd          z   }d}t          j        |                     |                    d                    t          j        ||          |                     |          	                                | j
        |         	          S )
Ns   %a %b %d %H:%M:%S %Z %Y
local_dater5   
commentr6   s   %Y-%m-%d %H:%M:%S %1%2author)r   datedescr"   )r!   r	   strdater?   r@   rA   r   commitdatestrr   r"   )r'   revrH   
dateformatr   r   newdateformats          r*   	getcommitzdarcs_source.getcommit   s    l3/
CGGL,A,A B BJOO||F##d*S\\)R-H-HH 2};;swwx0011!$66T""((**L%	
 
 
 	
r+   c           
      X   |                      d| j        dd|                     |          z  ddd| j                  \  }}|rg|                    d          dk    r|                     ||           |                      dd| j        	          \  }}|                     ||           d S d S )
Ns   pullTs   hash %ss
   /bin/false)allmatchno_testno_posthookexternal_merger0   s   We have conflicts ins   revert)r   r0   )r;   r   r?   r:   findr<   )r'   r   rC   rD   s       r*   pullzdarcs_source.pull   s    It{{3///(L " 	
 	
  	+{{233r99vv...!XXiT4<XPPNFFNN66*****		+ 	+r+   c                    |r!t          j        t          d                    i }g }d }| j        |                             d          D ]j}|j        dv r|j        dk    r||                                 }|                     |                    d                    }|                     |                    d                    }||v r4|	                    ||f           |	                    ||f           |||<   |dz   }|D ]h}	|	
                    |          s|dz   |	t          |          d          z   }
|	                    |	|f           |	                    |
|f           |	||
<   i)|	                    |                     |j                                                  |f           l|                     |           || _        t!          |          |t#                      fS )Ns*   convert from darcs does not support --fullr2   )add_directoryremove_directorymovefromto   /)r   r   r   r!   r   tagr}   r?   r@   rz   rB   lentextr   r   r    rr   set)r'   r   fullcopiesr!   r{   rH   sourcedestrm   fdests              r*   
getchangeszdarcs_source.getchanges   s    	P+a MNNOOO<$)))44 	E 	ECw???w&  ;--//CSWWV__55{{3774==11S==NNFC=111NND#;///#)F4LL $d]F  * * ||F33 %$ $taF.> >3x000s|444()u* CHNN,<,< = =sCDDDD		#g--r+   c                 >   || j         k    r!t          j        t          d                    t          j                            | j        |          }	 t          j	        |          }t	          j
        |          j        }n# t          $ r Y dS w xY w|dz  rdpd}||fS )Ns   internal calling inconsistency)NNI      xr+   )r    r   r   r   r   r   r   r:   r   readfilelstatst_modeFileNotFoundError)r'   r5   r   r   datamodes         r*   getfilezdarcs_source.getfile   s    $,+a ABBCCCw||DL$//	=&&D8D>>)DD  	 	 	::	u&$-#Tzs   -B 
BBc                     | j         S rk   )r#   rP   s    r*   gettagszdarcs_source.gettags   s
    yr+   rk   )__name__
__module____qualname__r   rJ   rQ   r?   r=   r$   r}   r   r   r   r   r   r   __classcell__)rZ   s   @r*   r   r      s        &D &D &D &DP! ! !28 8 8= = = = = =  L L L
 
 
" " "
 
 
+ + +"!. !. !.F
 
 
      r+   r   )r   ro   rN   xml.etree.ElementTreer   r   mercurial.i18nr   	mercurialr   r   r   mercurial.utilsr	   r6   r   r   r   r   r    r+   r*   <module>r      s   
			 				        
               
 % $ $ $ $ $      	C C C C C6*F,> C C C C Cr+   