
>gT,%                 @   s   d  d l  Z  d  d l m Z m Z d  d l m Z m Z m Z d  d l m	 Z	 m
 Z
 m Z e  j d  Z Gd d   d  Z d S)    N)makedirschmod)existsjoindirname)PKG_NAME_TPLSRT_LOCATIONSRT_TPLSdhpythonc               @   sy   e  Z d  Z d Z d d d  Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d S)	DebHelperz>Reinvents the wheel / some dh functionality (Perl is ugly ;-P)cpython3c             C   sJ  | |  _  i  |  _ d  |  _ d } d  } | |  _ t   } x6 t j   D]( \ } } | | k rF | j |  qF qF Wt |  } | j	 } | j
 }	 y t d d d d }
 Wn t k
 r t d   Yn XxJ|
 D]B} | j   s d } d  } q n  | j   } | r[| |  j k rq n  | j d  r| d	 d   j   } | |  j | d
 <q qq | j d  r| d d   j   } | r| j |  rt j d |  q n  | r| | k rq n  |	 r| |	 k rq n  i i  d 6i  d 6g  d 6d d
 6|  j | <q | j d  r2| d d   j   |  _ q | r|  j d k r| j d  r| d d   |  _ t |  j j d   d k rt d   qq | r |  j d k r | j d  r|  j s| d d   j   |  _ qn  | j d  r| d d   j   |  _ qq q W|
 j   t j d |  j t |  j j     d  S)NTzdebian/controlrencodingzutf-8zcannot find debian/control fileFzarchitecture:   archzpackage:   zskipping package: %s	substvarsautoscripts	rtupdatesanyzsource:   r   zx-python3-version:   ,   zDtoo many arguments provided for X-Python3-Version: min and max only.Zcpython2zxs-python-version:zx-python-version:   zsource=%s, binary packages=%s)optionspackagesZpython_versionimplsetr   itemsupdatetuplepackageZ
no_packageopenIOError	Exceptionstriplower
startswithlogdebugZsource_namelensplit
ValueErrorcloselistkeys)selfr   r   Zsource_sectionZbinary_packageZskip_tplnameZtplsZpkgsZ	skip_pkgsfplineZline_lr    r5   */usr/share/dh-python/dhpython/debhelper.py__init__    st    								
$	#
zDebHelper.__init__c             C   s(   |  j  | d j | g   j |  d S)zdebhelper's addsubstvarr   N)r   
setdefaultappend)r1   r"   r2   valuer5   r5   r6   addsubstvard   s    zDebHelper.addsubstvarc             C   s4   |  j  | d j | i   j | g   j |  d S)zdebhelper's autoscriptr   N)r   r8   r9   )r1   r"   whentemplateargsr5   r5   r6   
autoscripth   s    zDebHelper.autoscriptc             C   s   |  j  | d j |  d  S)Nr   )r   r9   )r1   r"   r:   r5   r5   r6   add_rtupdatem   s    zDebHelper.add_rtupdatec             C   s  x|  j  j   D]\ } } | j d  } | s7 q n  x| j   D]\ } } d | | f } t |  r t | d d d  } | j   } Wd  QXn d } d }	 x | j   D] \ }
 } x | D] } t t t  d d |
  } t |  s d	 |
 } n  t | d d d  } | j   } Wd  QX|  j	 j
 rQ| rQ| j d
 d  } n | j d |  } | j d |  } | | k r | |	 k r |	 d | 7}	 q q Wq W|	 rD | d d j |	  7} t | d d d } | j |  | j   qD qD Wq Wd  S)Nr   zdebian/%s.%s.debhelperr   r   zutf-8 z..zautoscripts/%sz#/usr/share/debhelper/autoscripts/%sz-p #PACKAGE#z	#PACKAGE#z#ARGS#z
%sz#
# Automatically added by dhpython:z%{}
# End automatically added section
w)r   r   getr   r#   readr   r   __file__r   compile_allreplaceformatwriter.   )r1   r"   settingsr   r<   Z	templatesfndatafiledataZnew_dataZtpl_namer>   iZfpathZtplfileZtplr3   r5   r5   r6   save_autoscriptsp   s>    zDebHelper.save_autoscriptsc             C   sD  x=|  j  j   D],\ } } | j d  } | s7 q n  d | } t |  rz t | d d d  } | j   } Wd  QXn d } xr| j   D]d\ } } | j d |  }	 |	 d k r| |	 d   j d	  }
 | |	 t d |  |
 d k r |	 |
 n d   } d
 d   | j d  D } |
 d k rr| |	 |
 d   j	   rrd | d  |	  | |	 |
 d   f } q| d  |	  } n g  } x* | D]" } | | k r| j
 |  qqW| r | r| d	 7} n  | d | d j |  f 7} q q W| j d d	  } | r t | d d d } | j |  | j   q q Wd  S)Nr   zdebian/%s.substvarsr   r   zutf-8rA   z%s=   
c             S   s"   g  |  ] } | r | j     q Sr5   )r&   ).0rN   r5   r5   r6   
<listcomp>   s   	 z,DebHelper.save_substvars.<locals>.<listcomp>r   z%s
%sz%s=%s
z, z

rB   rT   rT   )r   r   rC   r   r#   rD   findr+   r,   r&   r9   r   rG   rI   r.   )r1   r"   rJ   r   rK   rL   rM   r2   valuesper4   r   jr3   r5   r5   r6   save_substvars   s@    
 &+$zDebHelper.save_substvarsc          	   C   sh  xa|  j  j   D]P\ } } |  j j r. d n d | } | j d  } | sS q n  d j | t |  j  } t |  s t	 |  n  d | | f } t |  r t
 | d d d j   } n d	 } xV | D]N \ } }	 t |  j j d
 | d | d |	  }
 |
 | k r | d |
 7} q q W| r t
 | d d d } | j |  | j   t | d  q q Wd  S)NrA   z-p %sr   zdebian/{}/{}z%s/%s.rtupdater   r   zutf-8z#! /bin/sh
set -epkg_argdnamer>   z
%srB   i  )r   r   r   rF   rC   rH   r   r   r   r   r#   rD   r	   rI   r.   r   )r1   r"   rJ   r[   rV   drK   rM   r\   r>   cmdr3   r5   r5   r6   save_rtupdate   s.    	
zDebHelper.save_rtupdatec             C   s"   |  j    |  j   |  j   d  S)N)rZ   rO   r_   )r1   r5   r5   r6   save   s    

zDebHelper.saveN)__name__
__module____qualname____doc__r7   r;   r?   r@   rO   rZ   r_   r`   r5   r5   r5   r6   r      s   D'%r   )Zloggingosr   r   os.pathr   r   r   r
   r   r   r	   Z	getLoggerr)   r   r5   r5   r5   r6   <module>   s
   