U
    B‹ú]ý  ã                   @   sÊ   d dl mZmZ d dl mZ d dlZd dlZd dlZd dl	Z	dZ
G dd„ deƒZedkrÆedƒZee d	d
¡ƒ ee d	d¡ƒ ee dd¡ƒ ee d	dd¡ƒ ee d	dd¡ƒ ee d	dd¡ƒ dS )é    )ÚNoOptionErrorÚNoSectionError)ÚConfigParserNz&/etc/update-manager/release-upgrades.dc                   @   s.   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ ZdS )ÚDistUpgradeConfigúDistUpgrade.cfgNc                 C   sà   t  | ¡ tjdddgtjdd ¡ d  ¡ }|| _tj	 
||¡}tj	 |d | ¡rb|d| 7 }g | _|rŒt |d ¡D ]}| j |¡ qz|  j|g7  _|d kr¨t}|d k	rÐt |d ¡D ]}| j |¡ q¾|  | j¡ d S )	NZlsb_releasez-cz-sT)ÚstdoutZuniversal_newlinesr   Ú.z/*.cfg)ÚSafeConfigParserÚ__init__Ú
subprocessÚPopenÚPIPEZcommunicateÚstripÚdatadirÚosÚpathÚjoinÚexistsZconfig_filesÚglobÚappendÚCONFIG_OVERRIDE_DIRÚread)Úselfr   ÚnameZoverride_dirZdefaults_dirZfrom_releaseZmaincfgZcfg© r   úE/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeConfigParser.pyr
   "   s.    
 þþzDistUpgradeConfig.__init__c              	   C   s~   z\t |ƒtkr|  ||¡W S t |ƒtkr6|  ||¡W S t |ƒtkrP|  ||¡W S |  ||¡W S  tt	fk
rx   | Y S X d S )N)
ÚtypeÚboolZ
getbooleanÚfloatZgetfloatÚintZgetintÚgetr   r   )r   ÚsectionÚoptionÚdefaultr   r   r   ÚgetWithDefault=   s    z DistUpgradeConfig.getWithDefaultc              	   C   sF   z|   ||¡}W n ttfk
r,   g  Y S X dd„ | d¡D ƒ}|S )Nc                 S   s   g | ]}|  ¡ ‘qS r   ©r   ©Ú.0Úxr   r   r   Ú
<listcomp>N   s     z-DistUpgradeConfig.getlist.<locals>.<listcomp>ú,)r    r   r   Úsplit)r   r!   r"   ZtmpÚitemsr   r   r   ÚgetlistI   s    
zDistUpgradeConfig.getlistc              	   C   s„   z|   ||¡}W n tk
r(   g  Y S X tj | j|¡}tj |¡sTt d| ¡ t	|ƒ}dd„ |D ƒ}W 5 Q R X dd„ |D ƒS )NzgetListFromFile: no '%s' foundc                 S   s   g | ]}|  ¡ ‘qS r   r%   r&   r   r   r   r)   Z   s     z5DistUpgradeConfig.getListFromFile.<locals>.<listcomp>c                 S   s"   g | ]}|  d ¡s|dks|‘qS )ú#Ú )Ú
startswith)r'   Úsr   r   r   r)   [   s     
  )
r    r   r   r   r   r   r   ÚloggingÚerrorÚopen)r   r!   r"   ÚfilenameÚpÚfr,   r   r   r   ÚgetListFromFileQ   s    

z!DistUpgradeConfig.getListFromFile)r   NN)Ú__name__Ú
__module__Ú__qualname__r
   r$   r-   r8   r   r   r   r   r   !   s       ÿ
r   Ú__main__r   ZDistroZMetaPkgsZForcedPurgesZSourcesZValidMirrorsZEnableApportTZFooÚFalse)Úconfigparserr   r   r   r	   r   Úos.pathr   r2   r   r   r   r9   ÚcÚprintr-   r8   r$   Úsetr   r   r   r   Ú<module>   s   =