
    h#                        S SK r S SKrS SKrS SKrS SKrS SKJr  SrSr	Sr
\" \	5      R                  SSS9  \" \ R                  R                  \5      5      R                  SSS9  \ R                  R                  \5      (       a%  \" \S5       r\R"                  " \5      rSSS5        OS	0 0rS
 rS rS rS rS rSS jrS rS r\S:X  a  \" 5         gg! , (       d  f       N7= f)    N)Pathz/var/lib/fempkg/db.jsonz/var/lib/fempkg/pkgsz/tmp/fempkgbuildT)parentsexist_okr	installedc                      [        [        S5       n [        R                  " [        U SS9  S S S 5        g ! , (       d  f       g = f)Nw   )indent)openDB_PATHjsondumpdb)fs    /root/fempkg.pysave_dbr      s*    	gs	q		"a" 
		s	   5
Ac                 R    U[         S   U '   [        5         [        SU  SU 35        g )Nr   zRegistered: -)r   r   print)nameversions     r   register_packager      s*    #B{ODI	Lay
)*    c                  d    [         S   R                  5        H  u  p[        U  SU 35        M     g )Nr   r   )r   itemsr   )pkgvers     r   list_installedr      s-    {O))+Qsen ,r   c                 z   [         R                  R                  [        [         R                  R	                  U 5      5      n[         R                  R                  U5      (       d/  [        SU  S35        [        R                  R                  X5        O[        SU 35        [         R                  " [        SS9  [        R                  " SSUS[        /SS	9  [         R                  R                  [        [         R                  R	                  U5      R                  S
S5      R                  SS5      5      nU$ )NzDownloading z...zUsing cached tarball T)r   tarxfz-C)checkz.tar.gz z.tar.xz)ospathjoinPKG_DIRbasenameexistsr   urllibrequesturlretrievemakedirs	BUILD_DIR
subprocessrunreplace)urldesttarballfolders       r   download_extractr7       s    ggll7BGG$4$4S$9:G77>>'""SE%&""30%gY/0KK	D)NNE4$	:$GWW\\)RWW%5%5g%>%F%FyQS%T%\%\]fgi%jkFMr   c                    0 n[        U S5       n[        UR                  5       U5        S S S 5        US   US   pCU[        S   ;   a  [	        U SU S35        g [        US   [        5      n[        R                  " U5        UR                  S/ 5       H'  n[	        S	U 35        [        R                  " US
S
S9  M)     [        X45        g ! , (       d  f       N= f)Nr   pkgnamepkgverr   z  already installed, use 'update z' to rebuildsourcebuildz> T)shellr#   )r   execreadr   r   r7   r/   r%   chdirgetr0   r1   r   )recipe_filereciper   r   r   src_dircmds          r   build_packagerF   .   s    F	k3	1QVVXv 
  9%vh'7'r+6tfLIJvh/;GHHWzz'2&3%js$d3 ' T#! 
 	s   C
Cc                    U (       ab  [         R                  R                  SU  S35      n[         R                  R                  U5      (       d  [	        SU  35        g [        U5        g [        S    Hf  n[         R                  R                  SU S35      n[         R                  R                  U5      (       a  [        U5        MW  [	        SU S35        Mh     g )Nrecipesz
.recipe.pyzNo recipe found for r   z, skipping...)r%   r&   r'   r*   r   rF   r   )r   rB   r   s      r   update_packagerI   B   s    ggll9j.ABww~~k**(/0k" k?C'',,ySE2DEKww~~k**k*,SE?@ #r   c                  r    [        S5        [        S5        [        S5        [        S5        [        S5        g )Nz)Usage: pkg [list|register|install|update]z4  list                     - list installed packagesz6  register <name> <ver>    - manually register packagez0  install <recipe.py>      - install from recipez>  update [pkg]             - rebuild a package or all packages)r    r   r   	help_menurL   S   s/    	
56	
@A	
BC	
<=	
JKr   c                  j   [        [        R                  5      S:  a  [        5         g [        R                  S   n U S:X  a  [	        5         g U S:X  aL  [        [        R                  5      S:X  a/  [        [        R                  S   [        R                  S   5        g U S:X  a:  [        [        R                  5      S:X  a  [        [        R                  S   5        g U S:X  aE  [        [        R                  5      S:X  a  [        [        R                  S   5        g [        5         g [        5         g )	Nr
      listregister      installupdate)lensysargvrL   r   r   rF   rI   )rE   s    r   mainrX   Z   s    
388}q
((1+C
f}	
	s388}1!chhqk2			c#((mq0chhqk"	sxx=A388A;'r   __main__)N)r%   rV   r   r0   urllib.requestr+   pathlibr   r   r(   r/   mkdirr&   dirnamer*   r   r   loadr   r   r   r   r7   rF   rI   rL   rX   __name__rK   r   r   <module>r`      s    0 0 0 
#
 	 W  D4  0 RWW__W  $ $TD $ A 77>>'	gs	qYYq\ 
	 r	B#+
$(A"L* zF C 
	s   C
C&