
    Æe!!                         d Z ddlZddlZddlZddlZddlZ ej                  de      Zd Z	 G d d      Z
 G d d      Z G d	 d
      Z G d d      Z G d d      ZddZddedefdZddZd Zd Zd Zy)a  Project file system commands.

This modules implements file system operations used by rope.  Different
version control systems can be supported by implementing the interface
provided by `FileSystemCommands` class.  See `SubversionCommands` and
`MercurialCommands` for example.

    NFileContentc                     t        j                  |       }t        t        t        t        t
        d}|D ]  }||v s	  ||   |       c S  t               S # t        t        f$ r Y 2w xY w)N)z.hgz.svnz.git_svn_darcs)	oslistdirMercurialCommandsSubversionCommandsGITCommandsDarcsCommandsImportErrorOSErrorFileSystemCommands)rootdirlistcommandskeys       6/usr/lib/python3/dist-packages/rope/base/fscommands.pycreate_fscommandsr      sx    jjG ""H  '>$x}T**   ) s   
AA'&A'c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)r   c                 8    t        |d      j                          y )Nw)opencloseselfpaths     r   create_filezFileSystemCommands.create_file%   s    T3    c                 .    t        j                  |       y N)r   mkdirr   s     r   create_folderz FileSystemCommands.create_folder(   s    
r   c                 0    t        j                  ||       y r!   )shutilmover   r   new_locations      r   r&   zFileSystemCommands.move+   s    D,'r   c                     t         j                  j                  |      rt        j                  |       y t	        j
                  |       y r!   )r   r   isfileremover%   rmtreer   s     r   r+   zFileSystemCommands.remove.   s)    77>>$IIdOMM$r   c                     t        |d      }	 |j                  |       |j                          y # |j                          w xY w)Nwb)r   writer   )r   r   datafile_s       r   r/   zFileSystemCommands.write4   s2    T4 	KKKKMEKKMs	   0 Ac                 f    t        |d      5 }|j                         cd d d        S # 1 sw Y   y xY w)Nrb)r   read)r   r   handles      r   r4   zFileSystemCommands.read;   s,    $ 	!;;=	! 	! 	!s   '0N)	__name__
__module____qualname__r   r#   r&   r+   r/   r4    r   r   r   r   $   s      ( !r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	r
   c                 T    t               | _        dd l}|j                         | _        y Nr   )r   normal_actionspysvnClientclient)r   argsr>   s      r   __init__zSubversionCommands.__init__A   s    02llnr   c                 t    | j                   j                  |       | j                  j                  |d       y NT)force)r=   r   r@   addr   s     r   r   zSubversionCommands.create_fileG   s*    ''-D)r   c                 t    | j                   j                  |       | j                  j                  |d       y rD   )r=   r#   r@   rF   r   s     r   r#   z SubversionCommands.create_folderK   s*    ))$/D)r   c                 @    | j                   j                  ||d       y rD   )r@   r&   r'   s      r   r&   zSubversionCommands.moveO   s    |48r   c                 >    | j                   j                  |d       y rD   )r@   r+   r   s     r   r+   zSubversionCommands.removeR   s    4t,r   c                 <    | j                   j                  ||       y r!   r=   r/   r   r   r0   s      r   r/   zSubversionCommands.writeU       !!$-r   c                 8    | j                   j                  |      S r!   r=   r4   r   s     r   r4   zSubversionCommands.readX       ""''--r   N)
r6   r7   r8   rB   r   r#   r&   r+   r/   r4   r9   r   r   r
   r
   @   s%    %**9-..r   r
   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
r	   c                    | j                         | _        t               | _        	 | j                  j                  j	                  dddddd      | _        | j                  j                  j                  | j                  |      | _        y # t
        $ r | j                  j                  j	                         | _        | j                  j                  ddd       | j                  j                  ddd       | j                  j                  ddd       | j                  j                  dd	d       | j                  j                  dd
d       | j                  j                  ddd       Y w xY w)NFT)verbosedebugquietinteractive	tracebackreport_untrusteduirV   norT   rW   rS   rX   rU   yes)	_import_mercurialhgr   r=   rY   	Exception	setconfig
repositoryrepor   r   s     r   rB   zMercurialCommands.__init__]   s   ((*02	4ggjjmm!!& $ DG" GGJJ))$''48	  	4ggjjmmoDGGGdM48GGdGT2GGdK6GGdIt4GGd$6=GGdGU3	4s   0B C E0/E0c                     dd l }dd l}dd l}|S r<   )mercurial.commandsmercurial.hgmercurial.ui)r   	mercurials     r   r\   z#MercurialCommands._import_mercurialt   s    !r   c                     | j                   j                  |       | j                  j                  j	                  | j
                  | j                  |       y r!   )r=   r   r]   r   rF   rY   ra   r   s     r   r   zMercurialCommands.create_file{   s:    ''-TWWdii6r   c                 :    | j                   j                  |       y r!   r=   r#   r   s     r   r#   zMercurialCommands.create_folder       ))$/r   c                     | j                   j                  j                  | j                  | j                  ||d       y )NF)after)r]   r   renamerY   ra   r'   s      r   r&   zMercurialCommands.move   s-    D,eTr   c                 z    | j                   j                  j                  | j                  | j                  |       y r!   )r]   r   r+   rY   ra   r   s     r   r+   zMercurialCommands.remove   s&    D9r   c                 <    | j                   j                  ||       y r!   rK   rL   s      r   r/   zMercurialCommands.write   rM   r   c                 8    | j                   j                  |      S r!   rO   r   s     r   r4   zMercurialCommands.read   rP   r   N)r6   r7   r8   rB   r\   r   r#   r&   r+   r/   r4   r9   r   r   r	   r	   \   s+    9.70U:..r   r	   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)r   c                 T    || _         | j                  dg       t               | _        y )Nversion)r   _dor   r=   rb   s     r   rB   zGITCommands.__init__   s"    	)02r   c                 ~    | j                   j                  |       | j                  d| j                  |      g       y NrF   )r=   r   ru   _in_dirr   s     r   r   zGITCommands.create_file   s0    ''-%d+,-r   c                 :    | j                   j                  |       y r!   rj   r   s     r   r#   zGITCommands.create_folder   rk   r   c                 h    | j                  d| j                  |      | j                  |      g       y Nmvru   rx   r'   s      r   r&   zGITCommands.move   s'    $T*DLL,FGHr   c                 H    | j                  d| j                  |      g       y )Nrmr}   r   s     r   r+   zGITCommands.remove   s    $T*+,r   c                 <    | j                   j                  ||       y r!   rK   rL   s      r   r/   zGITCommands.write   s    !!$-r   c                 8    | j                   j                  |      S r!   rO   r   s     r   r4   zGITCommands.read   rP   r   c                 :    t        dg|z   | j                         y )Ngitcwd_executer   r   rA   s     r   ru   zGITCommands._do   s    %4TYY/r   c                     |j                  | j                        r|t        | j                        dz   d  S | j                  S )N   )
startswithr   lenr   s     r   rx   zGITCommands._in_dir   s7    ??499%DII*,--yyr   N)r6   r7   r8   rB   r   r#   r&   r+   r/   r4   ru   rx   r9   r   r   r   r      s0    3
.0I-..0r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
r   c                 0    || _         t               | _        y r!   )r   r   r=   rb   s     r   rB   zDarcsCommands.__init__   s    	02r   c                 `    | j                   j                  |       | j                  d|g       y rw   )r=   r   ru   r   s     r   r   zDarcsCommands.create_file   s&    ''-%r   c                 `    | j                   j                  |       | j                  d|g       y rw   )r=   r#   ru   r   s     r   r#   zDarcsCommands.create_folder   s&    ))$/%r   c                 ,    | j                  d||g       y r{   )ru   r'   s      r   r&   zDarcsCommands.move   s    $l+,r   c                 :    | j                   j                  |       y r!   )r=   r+   r   s     r   r+   zDarcsCommands.remove   s    ""4(r   c                 8    | j                   j                  |      S r!   rO   r   s     r   r4   zDarcsCommands.read   rP   r   c                 <    | j                   j                  ||       y r!   rK   rL   s      r   r/   zDarcsCommands.write   rM   r   c                 :    t        dg|z   | j                         y )Ndarcsr   r   r   s     r   ru   zDarcsCommands._do   s    'T!tyy1r   N)r6   r7   r8   rB   r   r#   r&   r+   r4   r/   ru   r9   r   r   r   r      s*    3  -)..2r   r   c                     t        j                  | |t         j                        }|j                          |j                  S )N)r   stdout)
subprocessPopenPIPEwait
returncode)rA   r   processs      r   r   r      s/    tZ__EGLLNr   contentsreturnc                 0   t        | t              sJ |r|dk7  r| j                  d|      } |t        |       }|t	        | j                  |            S 	 t	        | j                               S # t        $ r t	        | j                  d            cY S w xY w)N
utf-8)
isinstancestrreplaceread_str_codingr   encodeUnicodeEncodeError)r   encodingnewliness      r   unicode_to_file_datar      s    h$$$H$##D(3"8,8??845558??,-- 58??73445s   A/ /#BBc                     t        | |      }d}d|v r|j                  dd      }d}d|v r|j                  dd      }d}||fS )Nr   z
)_decode_datar   )r0   r   resultnewlines       r   file_data_to_unicoder      sV    $)FG-v~d+7?r   c                     t        | t              r| S |t        |       }|d}	 | j                  |      S # t        t
        f$ r | j                  d      cY S w xY w)Nr   latin1)r   r   r   decodeUnicodeErrorLookupError)r0   r   s     r   r   r      se    $"4(
 %{{8$$+& %{{8$$%s   6  AAc                 "   d}t        |       t        k(  rd}t        j                  |      }n&d}t        j                  |j	                  d            }| j                  |d      d d D ]%  }t        j                  ||      st        |      c S  y )Ns+   ^[ 	]*#.*?coding[:=][ 	]*([-_.a-zA-Z0-9]+)   
r   ascii   )typebytesrecompiler   splitmatch_find_coding)sourceCODING_LINE_PATTERNr   lines       r   r   r     s    KF|u jj)<= jj)<)C)CG)LMWa(!, 88'.%% 	r   c                 H   t        | t              r| j                  d      } d}t        }	 | j	                  |      t        |      z   }| |   dvry |dz  }|t        |       k  rF || |         j                         r-|dz  }|t        |       k  r || |         j                         r-|}|t        |       k  r4| |   } ||      j                         s|dvrn|dz  }|t        |       k  r4| || }t        |t              r|j                  d      }|S # t        $ r Y y w xY w)Nr   s   codings   =:r   s   -_)r   r   r   chrindexr   isspaceisalnumr   r   
ValueError)textcodingto_chrstartendcr   s          r   r   r     s'   ${{7#FF

6"S[0;e#
c$iF4;$7$?$?$AQJE c$iF4;$7$?$?$ACIoS	A!9$$&1E>1HC	 CIo
 eCfe$]]7+F s%   $D AD )AD -'D 	D! D!r!   )NN)__doc__r   r   r%   r   typingNewTyper   r   r   r   r
   r	   r   r   r   r   r   r   r   r   r   r9   r   r   <module>r      s    
 	   fnn]E2 $! !8. .80. 0.f   F2 2:53 5 5	%$"r   