B
    ãUvgU  ã               @   sŒ   d dl mZ d dlZd dlZd dl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mZ e e¡ZG dd	„ d	eƒZe e¡ dS )
é    )Úabsolute_importN)Úparse)Úpath_to_url)Údisplay_pathÚmake_vcs_requirement_urlÚrmtree)ÚTempDirectory)ÚVersionControlÚvcsc                   s‚   e Zd ZdZdZdZdZd‡ fdd„	Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Z‡ fdd„Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚBazaarÚbzrz.bzrÚbranch)r   zbzr+httpz	bzr+httpszbzr+sshzbzr+sftpzbzr+ftpzbzr+lpNc                s6   t t| ƒj|f|ž|Ž ttdd ƒr2tj dg¡ d S )NÚuses_fragmentÚlp)Úsuperr   Ú__init__ÚgetattrÚurllib_parser   Úextend)ÚselfÚurlÚargsÚkwargs)Ú	__class__© ú9/tmp/pip-install-r_9ig3yj/pip/pip/_internal/vcs/bazaar.pyr      s    zBazaar.__init__c             C   s   d|gS )Nz-rr   )r   Úrevr   r   r   Úget_base_rev_args"   s    zBazaar.get_base_rev_argsc          	   C   sP   t j |¡rt|ƒ tdd��(}|  |j¡ | jd|g|jdd� W dQ R X dS )zU
        Export the Bazaar repository at the url to the destination location
        Úexport)ÚkindF)ÚcwdÚshow_stdoutN)ÚosÚpathÚexistsr   r   ÚunpackÚrun_command)r   ÚlocationÚtemp_dirr   r   r   r   %   s    zBazaar.exportc             C   sB   |  ¡ }t d||t|ƒ¡ ddg| ¡  ||g }|  |¡ d S )NzChecking out %s%s to %sr   z-q)Ú
to_displayÚloggerÚinfor   Úto_argsr&   )r   Údestr   Úrev_optionsÚrev_displayÚcmd_argsr   r   r   Ú	fetch_new5   s    
zBazaar.fetch_newc             C   s   | j d|g|d� d S )NÚswitch)r    )r&   )r   r-   r   r.   r   r   r   r2   @   s    zBazaar.switchc             C   s"   ddg|  ¡  }| j||d� d S )NÚpullz-q)r    )r,   r&   )r   r-   r   r.   r0   r   r   r   ÚupdateC   s    zBazaar.updatec                s2   t t| ƒ |¡\}}}| d¡r(d| }|||fS )Nzssh://zbzr+)r   r   Úget_url_rev_and_authÚ
startswith)r   r   r   Ú	user_pass)r   r   r   r5   G   s    
zBazaar.get_url_rev_and_authc             C   sl   | j dgd|d�}xT| ¡ D ]H}| ¡ }x:dD ]2}| |¡r.| |¡d }|  |¡r\t|ƒS |S q.W qW d S )Nr+   F)r!   r    )zcheckout of branch: zparent branch: é   )r&   Ú
splitlinesÚstripr6   ÚsplitÚ_is_local_repositoryr   )r   r'   ÚurlsÚlineÚxÚrepor   r   r   Úget_urlN   s    


zBazaar.get_urlc             C   s   | j dgd|d�}| ¡ d S )NÚrevnoF)r!   r    éÿÿÿÿ)r&   r9   )r   r'   Úrevisionr   r   r   Úget_revision[   s    zBazaar.get_revisionc             C   sR   |   |¡}|sd S | ¡  d¡s(d| }|  |¡}| ¡  dd¡d }t|||ƒS )Nzbzr:zbzr+ú-r8   r   )rA   Úlowerr6   rE   Úegg_namer;   r   )r   Údistr'   r@   Úcurrent_revÚegg_project_namer   r   r   Úget_src_requirementa   s    

zBazaar.get_src_requirementc             C   s   dS )z&Always assume the versions don't matchFr   )r   r-   Únamer   r   r   Úis_commit_id_equalk   s    zBazaar.is_commit_id_equal)N)Ú__name__Ú
__module__Ú__qualname__rM   ÚdirnameÚ	repo_nameÚschemesr   r   r   r1   r2   r4   r5   rA   rE   rL   rN   Ú__classcell__r   r   )r   r   r      s   
r   )Ú
__future__r   Úloggingr"   Zpip._vendor.six.moves.urllibr   r   Úpip._internal.downloadr   Úpip._internal.utils.miscr   r   r   Úpip._internal.utils.temp_dirr   Úpip._internal.vcsr	   r
   Ú	getLoggerrO   r*   r   Úregisterr   r   r   r   Ú<module>   s   
^