
    if                         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y)
    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_sourcec                    t         j                  j                  | ||||       t         j                  j                  | |d       t        j
                  j                  t        j
                  j                  |d            st        t        d      |z        t        j                  dd       | j                  d      j                         d   j                         }|dk  r!t        j                  t        d	      |z        d
t!               vrt        j                  t        d            t        j
                  j#                  |      | _        d | _        i | _        i | _        i | _        | j-                         }|r|dv rt        t        d      |z        y | j.                  j1                  t        d             y )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__   sy   ((r8T(M##D"h7 ww~~bggll4;<FG$NOO84))L)446q9??AV++ABWL  	)++a MNOOGG$$T*		 22* 	  3 GGLLABC    c                    t        j                  dt        j                  j	                  | j                        z   dz         | _        | j                  d| j
                        \  }}| j                  |       | j                  ddd| j                        }d }d }|j                  d	      D ]  }| j                  |j                  d
            }| j                  |j                  dd            }|j                  d      r|dd  j                         }n||| j                  |<   d }|| j                   |<   |g| j"                  |<   |} g | j"                  |<   y )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   s9   ''!1!1$))!<<tC
 '4<<@vxx4tyy  
 <<( 
	C;;swwv/D;;s||FB78Dw'qr(..*$%)		'"!$DLL#'&DLLE
	 !Ur+   c                     | j                   j                  d| j                  z         t        j                  | j                  d       y )Ns   cleaning up %s
T)ignore_errors)r%   debugr:   shutilrmtreer'   s    r*   afterzdarcs_source.after^   s.    )DLL89dll$7r+   c                 n    t        |t              r|j                  d      }t        t        |   ||      S )Nlatin-1)
isinstancestrencodesuperr   r?   )r'   sencoding	__class__s      r*   r?   zdarcs_source.recodeb   s1    a #A\4/8<<r+   c                    t               }t        d      } | j                  |fi |}|j                  |j                  |       |j                          | j                  |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   se      I.DIIc$V$AHHV,	q||$}}r+   c                 4   | j                  dd| j                        \  }}| j                  |       t        j                  d|t        j
                        }|sy dj                  t        d |j                  d      j                  d      D                    S )N   shows   repor/   s   ^\s*Format:\s*(.*)$   ,c              3   <   K   | ]  }|j                           y wN)r   ).0fs     r*   	<genexpr>z&darcs_source.format.<locals>.<genexpr>~   s     Ja	Js   r
   )
r;   r   r<   research	MULTILINEr   sortedgroupsplit)r'   rC   rD   ms       r*   r$   zdarcs_source.formatx   st    '7DIIFvII-vr||DyyJ1771:3C3CD3IJJKKr+   c                     g }| j                  ddd| j                        \  }}| j                  |       |j                  d      D ]  }|dd  }|s|j	                  |        |S )Nrh   s   filesT)no_directoriesr0      
   )r;   r:   r<   rt   append)r'   manrC   rD   liner   s         r*   manifestzdarcs_source.manifest   sr    XdDLL " 
 	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                  | j                  |j	                  d            |      }|j                  d      dz   |j                  dd      z   }d}t        j                  | j                  |j	                  d            t        j                  ||      | j                  |      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    ll3/
CGGL,A BJO||F#d*S\\)R-HH 2}};;swwx01!!$6T"((*LL%	
 	
r+   c           
      @   | j                  d| j                  dd| j                  |      z  ddd| j                        \  }}|rZ|j	                  d      dk(  r| j                  ||       | j                  dd| j                  	      \  }}| j                  ||       y y )
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    IIt{{3//(LL " 	
 {{23r9vv.!XXiT4<<XPNFFNN66*	 r+   c                 f   |rt        j                  t        d            i }g }d }| j                  |   j	                  d      D ]<  }|j
                  dv r|j
                  dk(  r|| j                         }| j                  |j                  d            }| j                  |j                  d            }||v r,|j                  ||f       |j                  ||f       |||<   |dz   }|D ]S  }	|	j                  |      s|dz   |	t        |      d  z   }
|j                  |	|f       |j                  |
|f       |	||
<   U |j                  | j                  |j                  j                               |f       ? | j                  |       || _        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   ++a MNOO<<$)))4 	ECww??ww& ;--/CSWWV_5{{3774=1S=NNFC=1NND#;/#)F4L $d]F  * ||F3$ $taF.> >3x0s|4()u* CHHNN,< =sCD1	E2 			#g--r+   c                 Z   || j                   k7  rt        j                  t        d            t        j
                  j                  | j                  |      }	 t        j                  |      }t	        j                  |      j                  }|dz  xr dxs d}||fS # t        $ r Y yw xY w)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CCww||DLL$/	==&D88D>))D u&$-#Tz ! 		s   4B 	B*)B*c                     | j                   S rk   )r#   rP   s    r*   gettagszdarcs_source.gettags   s    yyr+   rk   )__name__
__module____qualname__r   rJ   rQ   r?   r=   r$   r}   r   r   r   r   r   r   __classcell__)rZ   s   @r*   r   r      sH    &DP!28=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      sQ    
 	 
  
 % 	C6**F,>,> Cr+   