3
zYðiÛ  ã               @   s¦   d dl mZ d dlZd dlZd dlZyd dlmZ W n ek
rP   d dl	ZY nX d dl
mZmZ d dlmZmZ d dlmZ ejeƒZG dd„ deƒZejeƒ dS )	é    )Úabsolute_importN)Úparse)ÚrmtreeÚdisplay_path)ÚvcsÚVersionControl)Úpath_to_urlc                   sz   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‡ fdd„Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )!ÚBazaarÚbzrz.bzrÚbranchúbzr+httpú	bzr+httpsúbzr+sshúbzr+sftpúbzr+ftpúbzr+lpNc                sD   t t| ƒj|f|ž|Ž ttdd ƒr@tjjdgƒ tjjdgƒ d S )NÚuses_fragmentÚlp)Úsuperr	   Ú__init__ÚgetattrÚurllib_parser   ÚextendÚnon_hierarchical)ÚselfÚurlÚargsÚkwargs)Ú	__class__© ú-/tmp/pip-build-ue6tjl93/pip/pip/vcs/bazaar.pyr      s    zBazaar.__init__c             C   sR   t jddƒ}| j|ƒ tjj|ƒr*t|ƒ z| jd|g|dd� W dt|ƒ X dS )zU
        Export the Bazaar repository at the url to the destination location
        z-exportzpip-ÚexportF)ÚcwdÚshow_stdoutN)ÚtempfileÚmkdtempÚunpackÚosÚpathÚexistsr   Úrun_command)r   ÚlocationÚtemp_dirr   r   r    r!   &   s    
zBazaar.exportc             C   s   | j d|g|d� d S )NÚswitch)r"   )r*   )r   Údestr   Úrev_optionsr   r   r    r-   5   s    zBazaar.switchc             C   s   | j ddg| |d� d S )NÚpullz-q)r"   )r*   )r   r.   r/   r   r   r    Úupdate8   s    zBazaar.updatec             C   sl   | j ƒ \}}|r"d|g}d| }ng }d}| j||||ƒrhtjd||t|ƒƒ | jddg| ||g ƒ d S )Nz-rz (to revision %s)Ú zChecking out %s%s to %sr   z-q)Úget_url_revÚcheck_destinationÚloggerÚinfor   r*   )r   r.   r   Úrevr/   Úrev_displayr   r   r    Úobtain;   s    

zBazaar.obtainc                s,   t t| ƒjƒ \}}|jdƒr$d| }||fS )Nzssh://zbzr+)r   r	   r3   Ú
startswith)r   r   r7   )r   r   r    r3   L   s    
zBazaar.get_url_revc             C   sl   | j dgd|d�}xT|jƒ D ]H}|jƒ }x:dD ]2}|j|ƒr.|j|ƒd }| j|ƒr\t|ƒS |S q.W qW d S )Nr6   F)r#   r"   úcheckout of branch: úparent branch: é   )r;   r<   )r*   Ú
splitlinesÚstripr:   ÚsplitÚ_is_local_repositoryr   )r   r+   ÚurlsÚlineÚxÚrepor   r   r    Úget_urlS   s    

zBazaar.get_urlc             C   s   | j dgd|d�}|jƒ d S )NÚrevnoF)r#   r"   r=   éÿÿÿÿ)r*   r>   )r   r+   Úrevisionr   r   r    Úget_revision`   s    zBazaar.get_revisionc             C   sT   | j |ƒ}|sd S |jƒ jdƒs(d| }|jƒ jddƒd }| j|ƒ}d|||f S )Nzbzr:zbzr+ú-r=   r   z%s@%s#egg=%s)rF   Úlowerr:   Úegg_namer@   rJ   )r   Údistr+   rE   Úegg_project_nameÚcurrent_revr   r   r    Úget_src_requiremente   s    

zBazaar.get_src_requirementc             C   s   dS )z&Always assume the versions don't matchFr   )r   r.   r/   r   r   r    Úcheck_versiono   s    zBazaar.check_version)r
   r   r   r   r   r   r   )N)Ú__name__Ú
__module__Ú__qualname__ÚnameÚdirnameÚ	repo_nameÚschemesr   r!   r-   r1   r9   r3   rF   rJ   rQ   rR   Ú__classcell__r   r   )r   r    r	      s    
r	   )Ú
__future__r   Úloggingr'   r$   Úurllibr   r   ÚImportErrorÚurlparseÚ	pip.utilsr   r   Úpip.vcsr   r   Úpip.downloadr   Ú	getLoggerrS   r5   r	   Úregisterr   r   r   r    Ú<module>   s   
_