B
    b                 @   s   d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZmZmZ G dd	 d	e	Zd
d Zdd Zdd ZdS )z msgfmt tool     N)BuilderBase)	StopError)CYGWIN_DEFAULT_PATHS)MINGW_DEFAULT_PATHS)_detect_msgfmt_msgfmt_exists_read_linguas_from_filesc               @   s   e Zd ZdZdd ZdS )_MOFileBuildera  The builder class for `MO` files.

    The reason for this builder to exists and its purpose is quite simillar
    as for `_POFileBuilder`. This time, we extend list of sources, not targets,
    and call `BuilderBase._execute()` only once (as we assume single-target
    here).
    c       	      O   s   d }d|krb|d d k	rb|d }d |d< t ||}tj|rJ|| n|d k	r^|g| }n|}tj| |||f||}|d k	r||d< |S )NZLINGUAS_FILE)r   SConsUtilZis_Listextendr   _execute)	selfenvtargetsourceargskwZlinguas_filesZlinguasresult r   0lib/python3.7/site-packages/SCons/Tool/msgfmt.pyr   5   s    
z_MOFileBuilder._executeN)__name__
__module____qualname____doc__r   r   r   r   r   r	   ,   s   r	   c             K   s<   t jdd|d< d|d< d|d< d|d	< d
|d< tf |S )z- Create builder object for `MOFiles` builder z
$MSGFMTCOMz$MSGFMTCOMSTRactionz	$MOSUFFIXsuffixz	$POSUFFIXZ
src_suffixZ_POUpdateBuilderZsrc_builderTZsingle_source)r
   ZActionr	   )r   r   r   r   r   _create_mo_file_builderM   s    r   c             K   s   t jdkrPtjj| dtt d}|r>tj	|}| 
d| ntjtjjd yt| | d< W n tk
r|   d| d< Y nX | jtjdgdd	d
gdgd | jdt| id dS )z Generate `msgfmt` tool Zwin32msgfmt)Zdefault_pathsPATHz7msgfmt tool requested, but binary not found in ENV PATHZMSGFMTz-cz'$MSGFMT $MSGFMTFLAGS -o $TARGET $SOURCE z.moz.po)ZMSGFMTFLAGSZ	MSGFMTCOMZMSGFMTCOMSTRZMOSUFFIXZPOSUFFIXZMOFiles)ZBUILDERSN)sysplatformr
   ZToolZfind_program_pathr   r   ospathdirnameZAppendENVPathZWarningswarnZSConsWarningr   r   Z
SetDefaultr   ZCLVarZAppendr   )r   r   r   Zmsgfmt_bin_dirr   r   r   generateY   s(    

r'   c             C   s"   yt | S  tk
r   dS X dS )z Check if the tool exists FN)r   r   )r   r   r   r   existsx   s    r(   )r   r!   r#   ZSCons.Actionr
   Z
SCons.ToolZ
SCons.UtilZSCons.WarningsZSCons.Builderr   ZSCons.Errorsr   ZSCons.Platform.cygwinr   ZSCons.Platform.mingwr   ZSCons.Tool.GettextCommonr   r   r   r	   r   r'   r(   r   r   r   r   <module>   s   !