ó
È”Mc           @   s   d  d l  Z  y d  d l m Z Wn! e k
 rC d  d l m Z n Xd  d l Z d  d l Z e j d k  r~ d  d l m Z	 n  d  d l
 Td  d l Td Z d Z d	 „  Z d d
 „ Z e j ƒ  sü e j d e ƒ rü e e j d e ƒ e j d e ƒ ƒ qü n  d S(   iÿÿÿÿN(   t   md5i   i   (   t   Set(   t   *s   /etc/apt/sources.list.d/s   /etc/apt/sources.listc         C   s¹  t  j d d ƒ } t j j | ƒ s- d  } n  t  j d d ƒ } t j j | ƒ sZ d  } n  t |  ƒ } t ƒ  } x9| D]1} | j ƒ  } | j	 d ƒ p£ | j	 d ƒ s¬ qv n  d | k rÎ | | j
 d ƒ  } n  y" | j d  d ƒ \ } } } }	 Wn2 t k
 r$| j d  d	 ƒ \ } } } d
 }	 n X| j	 d ƒ r:qv n  t d | | | |	 f ƒ }
 d |
 j ƒ  } | j | ƒ | d k rµi d d 6d | |	 f d 6| d 6| d 6|	 d 6} n8 i d d 6d | |	 f d 6t j | | ƒ d 6|	 d 6} y t | | ƒ Wn3 t k
 r3} t j t d ƒ | j | f ƒ qv Xt  j d | f ƒ } | d  k	 re| j | ƒ n, | } | r~| | d <n  | r‘| | d <n  t  j d | f | ƒ qv W| j ƒ  | S(   Ns   sync-apt-keyrings   /etc/apt/trusted.gpgs   sync-apt-trustdbs   /etc/apt/trustdb.gpgs   deb s   rpm t   #i   i   t    s   cdrom:s   %s|%s|%s|%ss
   aptsync-%st   debs   apt-debt   types   %s - %st   namet   baseurlt   distributiont
   componentss   apt-rpms   While using %s: %st   channelst   keyringt   trustdb(   t   sysconft   gett   ost   patht   isfilet   Nonet   opent   sett   stript
   startswitht   findt   splitt
   ValueErrorR    t	   hexdigestt   addt	   posixpatht   joint   createChannelt   Errort   ifacet   errort   _R   t   updatet   close(   t   filenamet   keyring_patht   trustdb_patht   filet   seent   lineR   t   urit   distrot   compst   mt   aliast   datat   et   channel(    (    s@   /usr/lib/python2.7/dist-packages/smart/plugins/aptchannelsync.pyt   _loadSourcesList*   sb    			"



$
c         C   s  t  ƒ  } t j j |  ƒ r1 | j t |  ƒ ƒ n  t j j | ƒ r¯ xi t j | ƒ D]U } | j d ƒ rS t j j	 | | ƒ } t j j | ƒ r¨ | j t | ƒ ƒ q¨ qS qS Wn  t
 j d ƒ } xH t
 j d ƒ D]7 } | j d ƒ rÎ | | k rÎ t
 j d | f ƒ qÎ qÎ Wd  S(   Ns   .listR   s   aptsync-(   R   R   R   R   R$   R4   t   isdirt   listdirt   endswithR   R   R   t   keysR   t   remove(   t   sourcesfilet
   sourcesdirt   forceR*   t   entryt   filepathR   R0   (    (    s@   /usr/lib/python2.7/dist-packages/smart/plugins/aptchannelsync.pyt   syncAptChannelsu   s    	 s   sync-apt-sourcess   apt-sources-files   apt-sources-dir(   i   i   (   R   t   hashlibR    t   ImportErrorR   t   syst   version_infot   setsR   R   t   smart.channelt   smartt   APT_SOURCES_DIRt   APT_SOURCESR4   R   R?   R   t   getReadOnlyR   t   False(    (    (    s@   /usr/lib/python2.7/dist-packages/smart/plugins/aptchannelsync.pyt   <module>   s$   

	K