
    ki                     t    d dl Z d dlZd dlZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZddZd Zd Zd ZdS )    Nc                 h    t           j        j         dt          j                            |            S N/)libconfig
path_cacheospathbasenameprojects    U/home/osmocom-build/jenkins/workspace/gerrit-binpkgs@2/osmo-ci/scripts/obs/lib/git.pyget_repo_pathr   	   s+    j#AAbg&6&6w&?&?AAA    c                     | t           j        j        v rt           j        j        |          S t           j        j         d|  S r   )r   r   git_url_othergit_url_defaultr   s    r   get_repo_urlr      s;    #****z'00j(447444r   c                 x    | t           j        j        v rt           j        j        |          S t           j        j        S N)r   r   git_latest_tag_pattern_othergit_latest_tag_pattern_defaultr   s    r   get_latest_tag_patternr      s-    #*999z6w??:44r   c                 ,   t           j        j        }t          |           }t	          |           }t
          j                            |          rD|r+t          |  d           t          j	        ddg|           nt          |  d| d           d S t          |  d|            t          j
        t           j        j        d	           t          j	        dd
||g           t          j	        g d|           t          j	        g d|           d S )Nz: 'git fetch'gitfetchcwdz: using cached z (not cloning, not fetching)z
: cloning T)exist_okclone)r   r   z	user.namezOsmocom OBS scripts)r   r   z
user.emailzinfo@osmocom.org)r   args	git_fetchr   r   r	   r
   existsprintrun_cmdmakedirsr   r   )r   r   	repo_pathurls       r   r    r       s@   HEg&&I
w

C	w~~i    	PW+++,,,K(i88888WNNSNNNOOO	W
%
%
%
%&&&K
%5555Ki0111KEEE   KCCC     r   c                 x    t          |           }t          |  d           t          j        g d|           d S )Nz: 'git clean -ffxd')r   cleanz-ffxdr   )r   r$   r   r%   )r   r'   s     r   r*   r*   0   sH    g&&I	W
)
)
)***K)))y999999r   c                    t          |           }t          j        j        sEt          j        g d|          j                                        }t          |  d|            d S t          |  d| d           t          j        ddd|g|           t          |  d	| d           t          j        dd
d|g|           t          |  d           t          j        g d|           d S )N)r   logz--pretty=onelinez--abbrev-commitz-1r   z): skipping git checkout, current commit: z: 'git checkout -f 'r   checkoutz-fz: 'git reset --hard resetz--hardz: 'git submodule update --init')r   	submoduleupdatez--init)r   r   r!   git_checkoutr%   outputrstripr$   )r   branchr'   refs       r   r.   r.   6   s&   g&&I8  k ! ! !&/1 1 117 	HH3HHIII	W
2
2
2
2
2333K
D&1yAAAA	W
3
3&
3
3
3444K62	BBBB	W
5
5
5666K888iHHHHHHr   c                     t          |           }t          j        g d|           t          j        dddt          |          g|           dS )z checkout a given gerrit ID )r   reviewz-sr   r   r8   z-dN)r   r   r%   str)r   	gerrit_idr'   s      r   checkout_from_reviewr;   E   sU    g&&IK'''Y7777K$I7YGGGGGGr   c                 x    | t           j        j        v rt           j        j        |          S t           j        j        S r   )r   r   git_branch_othergit_branch_defaultr   s    r   get_default_branchr?   L   s-    #*---j)'22:((r   c                 J    t          |           }t          | d|            d S )Nzorigin/)r?   r.   )r   r5   s     r   checkout_default_branchrA   R   s.    ((FW((()))))r   c                     t          |           }t          j        g d|          }|j                                        S )N)r   z	rev-parseHEADr   )r   r   r%   r3   r4   )r   r'   rets      r   get_headrE   W   s>    g&&I
+222	
B
B
BC:r   Tc                 J   |st          |           }t          |           }t          |  d|            t          j        dd|d| g          }|j                            d          d         }|s1|rt          |  d|            d S t          j        |d|  d	           |S )
Nz#: getting head from git remote for r   	ls-remotezheads/	r   z: branch not found: zfailed to find head commit for z
 in output)r?   r   r$   r   r%   r3   splitexit_error_cmd)r   r5   branch_missing_okrepo_url	ls_remoterD   s         r   get_head_remoterN   ]   s     -#G,,G$$H	W
A
A
A
ABBBUK;LF;L;LMNNI


 
 
&
&q
)C  4 	W::&::;;;49 '3&'3 '3 '3 	4 	4 	4 Jr   c                 f   t          |           }t          j        |          }t          |           }t	          j        g d|          }|j                            d          D ]0}|                    d          }|	                    |          r|c S 1t	          j
        |d|  d|            d S )N)r   tagz-l--sort=-v:refnamer   
zcouldn't find latest tag for z, regex used on output: )r   recompiler   r   r%   r3   rI   stripmatchrJ   )r   pattern_strpatternr'   git_tag_retlines         r   get_latest_tagr\   s   s    (11Kj%%Gg&&I+GGG"+- - -K "((..  zz$== 	KKK	 { %?G %? %?1<%? %? @ @ @ @ @r   c           	         t          |           }t          j        |          }t          |  d           t	          j        ddddt          |           g          }|j                            d          D ]R}d|v rd|vr|	                                                    d          d	         }|
                    |          r|c S Sd S )
Nz$: getting latest tag from git remoter   rG   z--tagsrQ   rR   z^{}z
refs/tags/   )r   rT   rU   r$   r   r%   r   r3   rI   r4   rW   )r   rX   rY   rM   r[   s        r   get_latest_tag_remoter_      s    (11Kj%%G	W
:
:
:;;;UK;N)'224 5 5I &&t,, 
 
D==t##{{}}""<003== 	KKK	
 4r   c                 @    t          | t          |                      d S r   )r.   r\   r   s    r   checkout_latest_tagra      s     WnW--.....r   )T)r	   rT   
lib.configr   r   r   r   r    r*   r.   r;   r?   rA   rE   rN   r\   r_   ra    r   r   <module>rd      s   
			 				    B B B5 5 55 5 5  .: : :I I IH H H) ) )* * *
     ,@ @ @"  0/ / / / /r   