B
    `!                 @   s   d dl mZmZmZ e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mZmZmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ G dd deZ dS )    )absolute_importdivisionprint_functionN)	constants)ensure_type)AnsibleErrorAnsibleFileNotFoundAnsibleActionAnsibleActionFail)to_bytesto_text	to_native)boolean)string_types)
ActionBase)generate_ansible_template_varsc                   s"   e Zd ZdZd fdd	Z  ZS )ActionModuleTNc       #         s  |dkrt  }tt| ||}~x\dD ]T}|| jjkr(t| jj| d}|dk	rpt|tspt	d|t
|f || jj|< q(W y4t| jjdddd}t| jjd	ddd}W n. tk
r } zt	t|W dd}~X Y nX | jjd
d}	| jjdd}
| jjdd}| jjdd}| jjdd}| jjdd}| jjdd}| jjdd}| jjddpxd}|ryddl}W n tk
r   tdY nX y|jj W n tk
r   tdY nX dddg}dddg}||kr||| }zhy0|dk	r t	dnt|	dks4|
dkr>t	dnV||krRt	dnBy| d |	}	W n0 tk
r } zt	t|W dd}~X Y nX y| j|	}W n8 tk
r } zt	d!|	t|f W dd}~X Y nX t|d"d#}zXyt|d$:}yt| d"d#}W n tk
r.   t	d%Y nX W dQ R X |d&g }|| jj t!j"#|	g g }x,|D ]$}|$t!j"%|d  |$| qjW |}|& }|'t(|	|
 | j)j*|||||||||d'	 | j)j+|ddd(}W dQ R X W nT t,k
r    Y n> t-k
r@ } zt	d)t
|j.t|f W dd}~X Y nX W d| j/| X | j& }xd*D ]}|j0|d qdW t1j2t3j4d+} zt!j"%| t!j"5|	}!tt|!d"d#d,}|6t||d"d- W dQ R X |j't |!|
d. | j7j8jd/|| j9| j:| j| j)| j7d0}"|'|"j|d1 W dt;<t| d"d# X W n0 t,k
rj } z|'|j= W dd}~X Y nX W d| >| j9j?j@ X |S )2z! handler for template operations N)srcdeststatenewline_sequencevariable_start_stringvariable_end_stringblock_start_stringblock_end_stringstringz1%s is expected to be a string, but got %s insteadtrim_blocksTF)strictlstrip_blocksr   r   r   r   z
r   r   r   r   output_encodingzutf-8r   zAUnable to import Jinja2 defaults for determining Jinja2 features.zAOption `lstrip_blocks' is only available in Jinja2 versions >=2.7z\nz\rz\r\n
z)'state' cannot be specified on a templatezsrc and dest are requiredz/newline_sequence needs to be one of: 
,  or 
Z	templateszcould not find src=%s, %sZsurrogate_or_strict)errorsrbz+Template source files must be utf-8 encodedZansible_search_path)	
searchpathr   r   r   r   r   r   r   Zavailable_variables)Zpreserve_trailing_newlinesZescape_backslashesz%s: %s)r   r   r   r   r   r   r   r   )dirwb)encodingr"   )r   r   zansible.windows.win_copy)Ztask
connectionZplay_contextloaderZtemplarZshared_loader_obj)	task_vars)Adictsuperr   runZ_taskargsr   
isinstancer   r
   typer   get	TypeErrorr   Zjinja2.defaultsImportErrorr   defaultsZLSTRIP_BLOCKSAttributeErrorindexZ_find_needler   Z_loaderZget_real_filer   r   openreadUnicodeErrorextendZ_basedirospathdirnameappendjoincopyupdater   Z_templarZset_temporary_contextZdo_templater	   	Exception__name__Zcleanup_tmp_filepoptempfilemkdtempCZDEFAULT_LOCAL_TMPbasenamewriteZ_shared_loader_objZaction_loader_connectionZ_play_contextshutilrmtreeresultZ_remove_tmp_pathZ_shellZtmpdir)#selftmpr*   rM   Zs_typevaluer   r   esourcer   r   r   r   r   r   r   r   Zjinja2Zwrong_sequencesZallowed_sequencesZ
tmp_sourceZb_tmp_sourcefZtemplate_datar$   ZnewsearchpathpZ	temp_varsZ	resultantZnew_taskremoveZlocal_tempdirZresult_fileZcopy_action)	__class__ n/home/dcms/DCMS/lib/python3.7/site-packages/ansible_collections/ansible/windows/plugins/action/win_template.pyr-      s    








&


 0




"zActionModule.run)NN)rC   
__module____qualname__ZTRANSFERS_FILESr-   __classcell__rW   rW   )rV   rX   r      s   r   )!
__future__r   r   r   r0   __metaclass__r;   rK   statrE   Zansibler   rG   Zansible.config.managerr   Zansible.errorsr   r   r	   r
   Zansible.module_utils._textr   r   r   Z)ansible.module_utils.parsing.convert_boolr   Zansible.module_utils.sixr   Zansible.plugins.actionr   Zansible.templater   r   rW   rW   rW   rX   <module>   s   