U
    jPŒ^‰  ã                   @   s^   d dl Z d dlZd dlZd dlmZ d dlmZ dd„ Zdd„ Zdd	„ Z	G d
d„ dej
ƒZdS )é    N)Úfind_package)Úbasec                  C   s$   d} t j t j tjd¡¡r d} | S )Nz	share/manZman)ÚosÚpathÚexistsÚjoinÚsysÚprefix)Úmanpath© r   ú1/usr/lib/python3/dist-packages/pbr/hooks/files.pyÚget_manpath   s    r   c                 C   s   t j tƒ d|  ¡S )Nzman%s)r   r   r   r   )Úsectionr   r   r   Úget_man_section#   s    r   c                 C   s>   t jdkr.|  dd¡} d t | ¡¡ dd¡S d t | ¡¡S )NÚntú\ú/Ú )r   ÚnameÚreplacer   ÚshlexÚsplit)r   r   r   r   Úunquote_path'   s    
r   c                       sT   e Zd ZdZ‡ fdd„Z‡ fdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
‡  ZS )ÚFilesConfigÚfilesc                    s*   t t| ƒ |¡ || _| j dd¡| _d S )NÚ
data_filesr   )Úsuperr   Ú__init__r   ÚconfigÚgetr   )Úselfr   r   ©Ú	__class__r   r   r   :   s    zFilesConfig.__init__c                    s   | j | jd< tt| ƒ ¡  d S )Nr   )r   r   r   r   Úsave)r    r!   r   r   r#   ?   s    zFilesConfig.savec                    sâ   g }| j  d¡D ]À}| ¡  d¡rÆd|krÆ| d¡\}}| ¡ d d… }| ¡ }| tjj¡sj|tjj7 }t|ƒ}t|ƒ}t 	|¡D ]>\‰ }}	ˆ  
||d¡}
| d|
 ¡ | ‡ fdd„|	D ƒ¡ q„q| |¡ qd |¡| _ d S )	NÚ
Ú*ú=éÿÿÿÿé   z'%s' = c                    s   g | ]}d t j ˆ |¡ ‘qS )z '%s')r   r   r   )Ú.0Úf©Údirpathr   r   Ú
<listcomp>W   s     z,FilesConfig.expand_globs.<locals>.<listcomp>)r   r   ÚrstripÚendswithÚstripr   r   Úsepr   Úwalkr   ÚappendÚextendr   )r    ZfinishedÚlineÚtargetZsource_globZsource_prefixZunquoted_prefixZunquoted_targetZdirnamesÚfnamesZ
new_prefixr   r+   r   Úexpand_globsC   s*     ÿÿzFilesConfig.expand_globsc                 C   s   d| j |f | _ d S )Nz	%s
'%s' =©r   )r    Zman_pathr   r   r   Úadd_man_path]   s    zFilesConfig.add_man_pathc                 C   s   d| j |f | _ d S )Nz	%s
  '%s'r9   )r    Zman_pager   r   r   Úadd_man_page`   s    zFilesConfig.add_man_pagec                 C   sR   t ƒ }| jd }| ¡ D ]4}| ¡ d }| |tƒ ¡}| | ¡ ¡ |||< q|S )NÚmanpagesr'   )ÚdictÚ
pbr_configr   r0   r   Úlistr3   )r    Úman_sectionsr<   ZmanpageZsection_numberr   r   r   r   Úget_man_sectionsc   s    

zFilesConfig.get_man_sectionsc           	      C   s²   | j  d| j¡ ¡ }g }| d¡D ](}tj | ¡ ¡r"| t	 
| ¡ ¡¡ q"d |¡| j d< |  ¡  d| jkr®|  ¡ }| ¡ D ].\}}t|ƒ}|  |¡ |D ]}|  |¡ qœq~d S )NÚpackagesr$   r<   )r   r   r   r0   r   r   r   Úisdirr3   r   Zsmart_find_packagesr   r8   r>   rA   Úitemsr   r:   r;   )	r    rB   ZexpandedÚpkgr@   r   Zpagesr
   Zpager   r   r   Úhookm   s    

zFilesConfig.hook)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r8   r:   r;   rA   rF   Ú__classcell__r   r   r!   r   r   6   s   
r   )r   r   r   Zpbrr   Z	pbr.hooksr   r   r   r   Z
BaseConfigr   r   r   r   r   Ú<module>   s   