î
É XO  ã               @   s­   d  d l  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 m Z d  d l m Z Gd d „  d e ƒ Z e j e ƒ d S)	é    N)Úurlparse)Úlogger)ÚrmtreeÚdisplay_pathÚcall_subprocess)ÚvcsÚVersionControl)Úpath_to_urlc                   sÇ   e  Z d  Z d 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 ‡  S)$ÚBazaarÚbzrz.bzrÚbranchzbzr-branch.txtúbzr+httpú	bzr+httpsúbzr+sshúbzr+sftpúbzr+ftpúbzr+lpz[# This was a Bazaar branch; to make it a branch again run:
bzr branch -r %(rev)s %(url)s .
Nc                s[   t  t |  ƒ j | | | Ž t t d d  ƒ rW t j j d g ƒ t j j d g ƒ n  d  S)NÚuses_fragmentÚlp)Úsuperr
   Ú__init__Úgetattrr   r   ÚextendÚnon_hierarchical)ÚselfÚurlÚargsÚkwargs)Ú	__class__© ú9/home/ubuntu/projects/ifolica/build/pip/pip/vcs/bazaar.pyr      s    zBazaar.__init__c             C   s¿   d  } } x® | j  ƒ  D]  } | j ƒ  s | j ƒ  j d ƒ rE q n  t j d | ƒ } | ru | j d ƒ j ƒ  } n  | | j ƒ  d  … j ƒ  j d  d ƒ d } | r | r | | f Sq Wd S)Nú#z^bzr\s*branch\s*-r\s*(\d*)é   r   )NN)Ú
splitlinesÚstripÚ
startswithÚreÚsearchÚgroupÚendÚsplit)r   Úcontentr   ÚrevÚlineÚmatchr   r   r    Úparse_vcs_bundle_file   s    
",zBazaar.parse_vcs_bundle_filec             C   s   t  j d d ƒ } |  j | ƒ t j j | ƒ r> t | ƒ n  z/ t |  j d | g d | d |  j	 d d ƒWd t | ƒ Xd S)	zCExport the Bazaar repository at the url to the destination locationz-exportzpip-ÚexportÚcwdÚfilter_stdoutÚshow_stdoutFN)
ÚtempfileÚmkdtempÚunpackÚosÚpathÚexistsr   r   ÚcmdÚ_filter)r   ÚlocationÚtemp_dirr   r   r    r0   )   s    zBazaar.exportc             C   s    t  |  j d | g d | ƒd  S)NÚswitchr1   )r   r:   )r   Údestr   Úrev_optionsr   r   r    r>   6   s    zBazaar.switchc             C   s$   t  |  j d d g | d | ƒd  S)NÚpullz-qr1   )r   r:   )r   r?   r@   r   r   r    Úupdate9   s    zBazaar.updatec             C   s    |  j  ƒ  \ } } | r1 d | g } d | } n g  } d } |  j | | | | ƒ rœ t j d | | t | ƒ f ƒ t |  j d d g | | | g ƒ n  d  S)Nz-rz (to revision %s)Ú zChecking out %s%s to %sr   z-q)Úget_url_revÚcheck_destinationr   Únotifyr   r   r:   )r   r?   r   r,   r@   Úrev_displayr   r   r    Úobtain=   s    	zBazaar.obtainc                sA   t  t |  ƒ j ƒ  \ } } | j d ƒ r7 d | } n  | | f S)Nzssh://zbzr+)r   r
   rD   r%   )r   r   r,   )r   r   r    rD   K   s    zBazaar.get_url_revc             C   s˜   t  |  j d g d d d | ƒ} xp | j ƒ  D]b } | j ƒ  } xM d D]E } | j | ƒ rG | j | ƒ d } |  j | ƒ rˆ t | ƒ S| SqG Wq. Wd  S)	NÚinfor3   Fr1   úcheckout of branch: úparent branch: r"   )rJ   rK   )r   r:   r#   r$   r%   r*   Ú_is_local_repositoryr	   )r   r<   Úurlsr-   ÚxÚrepor   r   r    Úget_urlR   s    

zBazaar.get_urlc             C   s/   t  |  j d g d d d | ƒ} | j ƒ  d S)NÚrevnor3   Fr1   r"   éÿÿÿÿ)r   r:   r#   )r   r<   Úrevisionr   r   r    Úget_revision`   s    zBazaar.get_revisionc             C   s    t  |  j d g d d d | ƒ} g  } xl | j ƒ  D]^ } t j d | ƒ } | r4 | j d ƒ } | j d ƒ } | j | j ƒ  | j ƒ  f ƒ q4 q4 Wt | ƒ S)NÚtagsr3   Fr1   z([.\w-]+)\s*(.*)$r"   é   )	r   r:   r#   r&   r'   r(   Úappendr$   Údict)r   r<   rU   Útag_revsr-   Ú
tags_matchÚtagr,   r   r   r    Úget_tag_revse   s    &zBazaar.get_tag_revsc       	      C   s¿   |  j  | ƒ } | j ƒ  j d ƒ s1 d | } n  | j ƒ  j d d ƒ d } | sW d  S|  j | ƒ } |  j | ƒ } | | k r˜ d | | | f } n d | j ƒ  | f } d | | | f S)	Nzbzr:zbzr+ú-r"   r   z%s-%sz
%s-dev_r%sz%s@%s#egg=%s)rP   Úlowerr%   Úegg_namer*   rT   r\   )	r   Údistr<   Ú	find_tagsrO   Úegg_project_nameÚcurrent_revrY   Úfull_egg_namer   r   r    Úget_src_requirementq   s    zBazaar.get_src_requirement)zbzrr   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__ÚnameÚdirnameÚ	repo_nameÚbundle_fileÚschemesÚguider   r/   r0   r>   rB   rH   rD   rP   rT   r\   re   r   r   )r   r    r
      s"   r
   )r7   r4   r&   Zpip.backwardcompatr   Úpip.logr   Úpip.utilr   r   r   Úpip.vcsr   r   Úpip.downloadr	   r
   Úregisterr   r   r   r    Ú<module>   s   x