
    qi~                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrSqSq	S r
SS jrS rS rS rSS jrS rS	 rS
 rS rS rS rS rS rS rS rg)    Nc                  ,   [         R                  R                  SS5      n SU  S3/nU HF  n[         R                  R	                  [         R                  R                  U5      5      (       d  MF    g    [        S5        [        R                  " S5        g )NXDG_CONFIG_HOMEz	~/.configz~/.oscrcz
/osc/oscrczJERROR: oscrc does not exist, please create one as explained in the README.   )	osenvirongetpathexists
expanduserprintsysexit)	configdirpathsr	   s      /obs/lib/osc.pycheck_oscrcr      sq    

0+>II;j12E77>>"'',,T233  
  HHQK    c                 f    Ub,  SU;  a$  [        SU 35        [        R                  " S5        UqU qg )N:z3ERROR: this doesn't look like a valid OBS project: r   )r   r   r   projapiurl)urlobs_projs     r   
set_apiurlr      s7     hGzRSHHQKFr   c                     [        U [        5      (       a2  [        (       a!  S[        R                  " [        5       SU  3n O$SU  3n O[        (       a  SS[        /U -   n OS/U -   n [
        R                  " U /UQ70 UD6$ )Nzosc -A  zosc oscz-A)
isinstancestrr   shlexquotelibrun_cmd)cmdargskwargss      r   run_oscr'   *   sw    
 #s6EKK/0#7C,C6$'#-C'C-C;;s,T,V,,r   c                      [        S[         35        [        S[        /5      n U R                  R	                  5       R                  S5      $ )NzOBS: getting packages in list
)r   r   r'   outputrstripsplit)rets    r   get_remote_pkgsr/   =   s>    	%dV
,-
64.
!C::$$T**r   c                    [         R                  R                  n[        U  S35        [	        S[
        [        R                  R                  U 5      /5      nUR                  S:X  a  gUR                  R                  S5       H  nUR                  5       nUS:X  a^  U S:w  aX  UR                  S5      (       a@  UR                  S5      (       a(  UR                  S	5      S
   R                  S5      S   s  $ Mu  Mw  UR                  S5      (       d  M  UR                  S	5      S   S S s  $    [        U  S35        [        U  S35        g)Nz: getting OBS versionr)   r*   0masterzosmocom-mastercommit_z.txt_r   .r   z.dscz1: WARNING: failed to find package version on OBS!z": assuming the package is outdated)r"   r%   feedr   r'   r   r   r	   basenamer+   r-   r,   
startswithendswith)packager8   r.   lines       r   get_package_versionr>   C   s   88==D	WI*
+,
64!1!1'!:;
<C zzT 

  &{{}8+; ;y))dmmF.C.Czz#q)//4Q77 /D) }}V$$zz#r*3B// ' 
WIF
GH	WI7
89r   c                 x   S[          S[        R                  R                  U 5       3nU(       a  U SU 3n[	        SU/5      n[
        R                  R                  R                  UR                  5      n/ nUR                  S5       H+  nXVR                  S5       SUR                  S5       3/-  nM-     U$ )	N/source//z?rev=apientrymd5-name)r   r   r	   r9   r'   xmletreeElementTree
fromstringr+   findallr   )r<   revr   osc_retrootr.   rC   s          r   get_package_sourcesrO   ^   s     TF!BGG,,W56
7C
U3% ucl#G99  ++GNN;D Cg&99U#$Aeii&7%89:: 'Jr   c                    [        U  S35        [        R                  R                  U 5      n [        R
                  R                   S3nS[         SU  S3n[        US5       nUR                  SU  S[         S35        UR                  S	U  S
35        UR                  S5        UR                  S5        S S S 5        [        SSSSX/5        [        R                  " U5        g ! , (       d  f       N5= f)Nz: creating new OBS packagez/_metazsource/rA   wz<package name="z" project="z">
z<title>z	</title>
z<description></description>
z</package>
rB   z-XPUTz-T)r   r   r	   r9   r"   config	path_tempr   openwriter'   unlink)r<   	path_metapath_meta_obsfs       r   create_packager[   z   s    	WI/
01 ggw'G::''(/IdV1WIV4M	i		/'+dV4@A	''*-.	/0		 
 UD%y@AIIi 
	s   $AC''
C5c                  l    [         R                  " SS[         R                  R                   S3/5        g )Nrmz-rf/osc)r"   r#   rS   rT    r   r   remove_temp_oscr`      s'    KKu!5!5 6d;<=r   c                 8   [        U  S35        [        R                  R                  U 5      n [        R
                  " U 5      n[        R                  R                   S3nU S[         SU  3n[        5         [        R                  " U5        [        S[        U /US9  [        R                  " U S35      (       a  [        SSUS	9  [        R                  " S
[        R                  " U5       3SUS	9  [        SSUS	9  [        SSSU 3/US9  [        5         g )Nz: updating OBS packager^   rA   checkout)cwdz/*zdel *T)shellrc   zmv * zadd *commit-mzupgrade to )r   r   r	   r9   r"   get_output_pathrS   rT   r   r`   makedirsr'   globr#   r    r!   )r<   versionpath_outputpath_temp_oscpath_temp_osc_pkgs        r   update_packagern      s   	WI+
,- ggw'G%%g.Kzz++,D1M(/4&';KKZw'];yy%&b)**t):;KK%$5678! G4%67Xt{7)45;LMr   c           	          [        U  SU S35        [        SSU[        [        R                  R                  U 5      /5        g )Nz: removing from OBS ()rdeleterf   )r   r'   r   r   r	   r9   )r<   
commit_msgs     r   delete_packagers      s:    	WI*:,a
89Yj$0@0@0IJKr   c                     [        [         S35        [        R                  R	                  SS[        /5      R
                  n[        U S5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)Nz: getting prjconfmetaprjconfrQ   r   r   r"   r   r'   r+   rU   rV   )output_filerv   hs      r   get_prjconfrz      sU    	TF#
$%ggoovy$78??G	k3	1	 
 		   A**
A8c           	      |    [        [         S35        [        R                  R	                  SSSU SU[        /5        g )Nz: updating prjconfru   rv   -Frf   r   r   r"   r   r'   )prjconf_filerr   s     r   update_prjconfr      s9    	TF$
%&GGOOV<:	 r   c                     [        [         S35        [        R                  R	                  SS[        /5      R
                  n[        U S5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)Nz: getting metaru   prjrQ   rw   )rx   ru   ry   s      r   get_metar      sS    	TF.
!"77??FE40188D	k3	1	 
 		r{   c           	      |    [        [         S35        [        R                  R	                  SSSU SU[        /5        g )Nz: updating metaru   r   r}   rf   r~   )	meta_filerr   s     r   update_metar      s8    	TF/
"#GGOOV9:	 r   c                      [        S[         S35        [        R                  R	                  S/5      R
                  R                  5       R                  S5      $ )NzOBS: getting list of projects (rp   lsr*   )r   r   r"   r   r'   r+   r,   r-   r_   r   r   get_projectsr      sC    	+F81
5677??D6"))00288>>r   c                 F   [        S[         SU  35        S[         S[        R                  R	                  U 5       3n[        SU/5      n[        R                  R                  R                  UR                  5      nUR                  S5      nU(       a  [        U5      $ g)Nz OBS: getting latest revision of r   r@   rA   rB   rL   r   )r   r   r   r	   r9   r'   rG   rH   rI   rJ   r+   r   int)r<   r   rM   rN   rL   s        r   get_last_revr      s    	,TF!G9
=>TF!BGG,,W56
7Cucl#G99  ++GNN;D
((5/C
3xr   )N)ri   r   r    r   r"   
lib.configxml.etree.ElementTreerG   r   r   r   r   r'   r/   r>   rO   r[   r`   rn   rs   rz   r   r   r   r   r   r_   r   r   <module>r      sw   
  	  
 
  		
-&+68(>6L
?
	r   