
    if4                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZmZ ddlmZ  G d dej"                  ej$                        Zy)	    N)_)encodingerrormailpycompatutil)dateutilprocutil   )commonc                        e Zd Z G d d      Zd fd	Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )gnuarch_sourcec                       e Zd Zd Zy)gnuarch_source.gnuarch_revc                     || _         d| _        d | _        d| _        d | _        g | _        g | _        g | _        i | _        i | _	        y )N    )
revsummarydateauthorcontinuationof	add_files	mod_files	del_files	ren_filesren_dirs)selfr   s     7/usr/lib/python3/dist-packages/hgext/convert/gnuarch.py__init__z#gnuarch_source.gnuarch_rev.__init__   sI    DHDLDIDK"&DDNDNDNDNDMr   N)__name__
__module____qualname__r    r   r   gnuarch_revr      s    
	r   r$   c                    t         t        |   ||||       t        j                  j                  t        j                  j                  |d            s!t        j                  t        d      |z        d | _
        t        j                  d      rd| _
        nJt        j                  d      rd| _
        n-t        j                  t        d      t        d      dz  z         t        j                  j                  | || j                         t        j                  j!                  |      | _        d | _        d | _        d | _        i | _        i | _        i | _        t.        j.                  | _        g | _        y )N)revs   {arch}s+   %s does not look like a GNU Arch repositorys   baz   tlas   cannot find a GNU Arch tools     (try installing the %s package))superr   r   ospathexistsjoinr   NoRepor   execmdr
   findexer   Abortcommandlinerealpathtmppathtreeversionlastrevchangesparentstagsr   archives)r   uirepotyper+   r&   	__class__s        r   r   zgnuarch_source.__init__+   s.   nd,R4d,Kww~~bggll4;<--@ADH 
 F# DK'$kk!$B"C"#$G"H6"Q#R S S 	##D"dkk:GG$$T*		 ))r   c                    | j                  dd      D cg c]  }|j                  d       c}| _        | j                  dk(  r| j	                  d| j
                        }n| j	                  dd| j
                        }|j                         | _        | j                  j                  d      }t        j
                  j                  t        j                  t        j                               d|d	   z        | _        g | j                   d <   | j                  }d }|r| j"                  j%                  t'        d
      |z         |j                  d      d   }|| j                  vr(| j"                  j%                  t'        d      |z         y | j)                  ddd|      \  }}| j+                  |d|z         d }|D ]  }|j                         }	| j-                  |	      | j.                  |	<   g | j                   |	<   | j1                  dd| j
                  |	      \  }
}|r| j	                  d|	      }
| j3                  |
|	       | j                   |   j5                  |	       |	}| j.                  |	   j6                  r<dj                  | j.                  |	   j6                  j                  d      d d       } n|	dd  dk(  s n |ry y c c}w )Ns   archivess   -n   
r(   s   tree-version   -d   /s   hg-%sr   s   analyzing tree version %s...
r   sI   tree analysis stopped because it points to an unregistered archive %s...
s	   revisionss   -rs   -fs"   failed retrieving revisions for %ss   cat-logs   cat-archive-logs   --is   base-0)	runlines0rstripr:   r/   run0r+   stripr5   splitr*   r-   r   fsencodetempfile
gettempdirr4   r8   r;   statusr   runlines	checkexitr$   r7   run_parsecatlogappendr   )r   ioutputversionr5   childarchiverK   lr   catlogs              r   beforezgnuarch_source.beforeK   s    &*^^K%G
 !AHHUO
 ;;& YY		:FYYtyyAF!<<> ""((.ww||h1134h6K

  T&&GGNN1>?+MN!''-a0Gdmm+; 	  "]]eUKNFF NN=K
 K ggi$($4$4S$9S!$&S! "&*eTYY!L!YY'93?F!!&#. U#**3/ 
 <<$33"'**S)88>>uEcrJ#K  rs8y(=3 )
s   Kc                     | j                   j                  d| j                  z         t        j                  | j                  d       y )Ns   cleaning up %s
Tignore_errors)r;   debugr4   shutilrmtreer   s    r   afterzgnuarch_source.after   s.    )DLL89dll$7r   c                      | j                   d    S N)r8   r_   s    r   getheadszgnuarch_source.getheads   s    ||D!!r   c                    || j                   k7  rt        j                  t        d            t        j
                  j                  t        j
                  j                  | j                  |            sy| j                  ||      S )Ns   internal calling inconsistency)NN)
r6   r   r1   r   r*   r+   lexistsr-   r4   _getfile)r   namer   s      r   getfilezgnuarch_source.getfile   sZ    $,,++a ABCCwwrww||DLL$?@}}T3''r   c                    |rt        j                  t        d            | j                  |       g }i }| j                  |   j
                  D ]  }|j                  ||f        | j                  |   j                  D ]  }|j                  ||f        | j                  |   j                  D ]  }|j                  ||f        | j                  |   j                  D ]I  }| j                  |   j                  |   }|j                  ||f       |j                  ||f       |||<   K | j                  |   j                  D ]Y  }| j                  |   j                  |   }| j                  ||      \  }}	||D cg c]  }||f c}z  }|j                  |	       [ || _        t        t        |            |t               fS c c}w )Ns)   convert from arch does not support --full)r   r1   r   _updater7   r   rP   r   r   r   r   _rendirchangesupdater6   sortedset)
r   r   fullr7   copiesfsrctochgscpss
             r   
getchangeszgnuarch_source.getchanges   s   ++a LMNNSc",, 	%ANNAs8$	% c",, 	%ANNAs8$	% c",, 	%ANNAs8$	% <<$.. 	Cc",,S1BNNC:&NNB9%F2J		 <<$-- 	Cc"++C0B++C4ID#$/QC//GMM#		 c'l#VSU22	 0s    G	c                     | j                   |   }t        j                  |j                  |j                  |j
                  | j                  |   |      S )N)r   r   descr8   r   )r7   r   commitr   r   r   r8   )r   r   r7   s      r   	getcommitzgnuarch_source.getcommit   sE    ,,s#}}>>LL%
 	
r   c                     | j                   S rb   )r9   r_   s    r   gettagszgnuarch_source.gettags   s    yyr   c                    | j                   |g}||z  }|D cg c]  }t        j                  |       }}t        j                  t
        j                        }|d|d|gz  }dj                  |      }| j                  j                  |d       t        j                  t        j                  t        j                  |            S c c}w )N   >s   2>    r?   )r/   r
   
shellquoter   bytestrr*   devnullr-   r;   r\   systemrapplytonativestr)r   cmdargskwargscmdlineargbdevnulls          r   _executezgnuarch_source._execute   s    ;;$47>?8&&s+??##BJJ/D(E844))G$gu%yy)=)=wGHH @s   Cc                 t   | j                   j                  d|z         | j                  dd| j                  |      \  }}|r3t	        j
                  | j                  d       | j                  |       y | j                  |   d   }| j                   j                  d||fz         | j                  ||       y )Ns   applying revision %s...
s   replayr@   TrZ   r   s)   computing changeset between %s and %s...
)	r;   r\   rL   r4   r]   r^   _obtainrevisionr8   _parsechangeset)r   r   	changesetrK   old_revs        r   rj   zgnuarch_source._update   s    2S89 MM)UDLL#N	6 MM$,,d;  %ll3'*GGGMM=#N   C0r   c                    t        j                  t         j                  j                  | j                  |            j
                  }t        j                  |      rKt        j                  t         j                  j                  | j                  |            }|rd}||fS d}||fS t        j                  t         j                  j                  | j                  |            }|dz  xr dxs d}||fS )N   lr   I      x)r*   lstatr+   r-   r4   st_modestatS_ISLNKr   readlinkreadfile)r   rg   r   modedatas        r   rf   zgnuarch_source._getfile   s    xxT\\489AA<<==dllD!ABD Tz	  Tz ==dllD!ABD5L*d1cDTzr   c                 F    g d}|D ]  }|j                  |      dk7  s y y)N)r'   s	   .arch-idss   .arch-inventoryrB   TF)find)r   rg   excludeexcs       r   _excludezgnuarch_source._exclude   s.    ? 	Cyy~#	 r   c                    g }t        j                  |      }t        |      dkD  r|j                         }t         j                  j                  ||      }| j                  |      sut         j                  j                  |      rE|t        j                  |      D cg c]"  }t         j                  j                  ||      $ c}z  }n|j                  |       t        |      dkD  r|S c c}w )Nr   )	r*   listdirlenpopr+   r-   r   isdirrP   )r   r+   filescontentscprq   s          r   _readcontentszgnuarch_source._readcontents  s    ::d#(maAT1%A ==#77==#RZZ] Ka!3 KKHLLO (ma  !Ls   'C-c                 `   g }i }| j                  t        j                  j                  | j                  |            }|D ]i  }t        j                  j                  ||      }t        j                  j                  ||      }|j                  |       |j                  |       |||<   k ||fS rb   )r   r*   r+   r-   r4   rP   )	r   rr   destr7   rp   r   rq   sds	            r   rk   zgnuarch_source._rendirchanges  s    ""277<<d#CD 	AS!$AT1%ANN1NN1F1I	 r   c                 R   | j                   j                  d|z         | j                  d|| j                        }| j	                  |       | j                   j                  d|z         | j                  | j                        }| j                  |   xj                  |z  c_        y )Ns   obtaining revision %s...
s   gets   analyzing revision %s...
)r;   r\   r   r4   rM   r   r7   r   )r   r   rR   r   s       r   r   zgnuarch_source._obtainrevision  s~    3c9:vsDLL9v3c9:""4<<0S##u,#r   c                 2    |j                  d      r|dd  S |S )Ns   ./   )
startswith)r   r+   s     r   _stripbasepathzgnuarch_source._stripbasepath&  s    ??5!8Or   c                    	 t        j                  |      }t        j                  t        j                  |d   d            | j
                  |   _        | j                  |d         | j
                  |   _        dj                  | j                  |d         | j                  |j                               f      | j
                  |   _        | j                  | j
                  |   j                        | j
                  |   _        d|v r'| j                  |d         | j
                  |   _        y y # t        $ r" t        j                  t!        d      |z        w xY w)NzStandard-dates   %Y-%m-%d %H:%M:%SCreators   

SummaryzContinuation-ofs   could not parse cat-log of %s)r   
parsebytesr	   datestrstrdater7   r   recoder   r-   get_payloadr   r   	Exceptionr   r1   r   )r   r   r   rW   s       r   rO   zgnuarch_source._parsecatlog+  s<   	I__T*F &.%5%5  !8:NO&DLL"
 (,{{6)3D'EDLL$ )0KKy 12KK 2 2 45)DLL% )-DLL4E4M4M(NDLL% !F*37;;,-4S!0 +  	I++a @ACGHH	Is   D1D5 5+E c                    |D ]p  }|j                         }|j                  d      rn|j                  d      s]| j                  |dd  j                               }| j                  |      rj| j                  |   j
                  j                  |       |j                  d      ro|j                  d      s^| j                  |dd  j                               }| j                  |      r| j                  |   j                  j                  |       |j                  d      r_| j                  |dd  j                               }| j                  |      rY| j                  |   j                  j                  |       |j                  d      r_| j                  |d	d  j                               }| j                  |      r| j                  |   j                  j                  |       |j                  d
      r_| j                  |dd  j                               }| j                  |      r9| j                  |   j                  j                  |       c|j                  d      r|dd  j                         j                  d      }t        |      dk(  r"|dd  j                         j                  d      }| j                  |d         }| j                  |d         }| j                  |      r| j                  |      r|| j                  |   j                  |<   2|j                  d      r_| j                  |dd  j                               }| j                  |      rx| j                  |   j                  j                  |       |j                  d      s|dd  j                         j                  d      }t        |      dk(  r"|dd  j                         j                  d      }| j                  |d         }| j                  |d         }| j                  |      rB| j                  |      rU|| j                  |   j                  |<   s y )N   As   A/r      Ds   D/s   Mbr   s   M->      Ms   =>r      	r   s   chs   />)rF   r   r   r   r7   r   rP   r   r   rG   r   r   r   )	r   r   r   rV   filer   rr   dstdirss	            r   r   zgnuarch_source._parsechangesetH  sg    1	:A	A||D!!,,u*=**1QR5;;=9}}T*LL%//66t<d#ALL,?**1QR5;;=9}}T*LL%//66t<e$**1QR5;;=9}}T*LL%//66t<f%**1QR5;;=9}}T*LL%//66t<d#**1QR5;;=9}}T*LL%//66t<e$!"++D1u:?abEKKM//6E))%(3))%(3}}S)$--2D7:DLL%//4e$**1QR5;;=9}}T*LL%//66t<e$u{{}**40t9>QR5;;=..u5D))$q'2))$q'2}}S)$--2D69DLL%..s3c1	:r   rb   )r    r!   r"   r$   r   rX   r`   rc   rh   rv   rz   r|   r   rj   rf   r   r   rk   r   r   rO   r   __classcell__)r=   s   @r   r   r      sl     @M^8"(3>
I1
-
I:2:r   r   )r*   r]   r   rI   mercurial.i18nr   	mercurialr   r   r   r   r   mercurial.utilsr	   r
    r   converter_sourcer2   r   r#   r   r   <module>r      sF    
      ]:V,,f.@.@ ]:r   