o nnh@sddlmZddlZddlZddlZddlZddlZddlmZ ddl m Z m Z m Z mZddlmZmZddlmZddlmZddlmZGd d d eZdS) ) annotationsN) constants) AnsibleError AnsibleAction_AnsibleActionDoneAnsibleActionFail) to_nativeto_text)boolean) ActionBase) checksum_scs,eZdZdZdddZd fdd ZZS) ActionModuleTNFc Cs4tjtjd\}}t|d}d} d} ddtt|DD]t} |r)|| s)qd|| f} tj | r@|rAtj |  drAqt |jj| |dd  } | }Wd n1s[wY| rg|d | r|rt|d }|||d d kr|d ||d} |d rd} qd} q||S)z/ assemble a file from a directory of fragments )dirwbFcss|] }t|ddVqdS)surrogate_or_strict)errorsN)r ).0prJ/usr/local/lib/python3.10/dist-packages/ansible/plugins/action/assemble.py /sz8ActionModule._assemble_from_fragments..z%s/%s.)decryptrbN rT)tempfilemkstempCDEFAULT_LOCAL_TMPosfdopensortedlistdirsearchpathisfilebasename startswithopen_loader get_real_filereadwritecodecs escape_decodeendswithclose)selfsrc_path delimitercompiled_regexp ignore_hiddenrtmpfd temp_pathtmp delimit_me add_newlineffragment fragment_fhfragment_contentrrr_assemble_from_fragments's8  "       z%ActionModule._assemble_from_fragmentsc sd|_tt|||}~|durt}|jjdd}|jjdd}|jjdd}|jjdd}|jjdd}|jjdd} |jjd d} |jjd d } z z|dus_|durct d t |dd rv| |j d|dt z|d|}Wnty} zt t| d} ~ wwtj|st d|d} |durt|} |||| | | }t|}||}|j||| d}i}|jj}dD] }||vr||=q||d<||dkr$|jjr||||}|jj|jjj d}|!||}|"|jjj |f| t|d|j d||d}|r||d<| |n | |j d||dWnt#yI} z | | j$WYd} ~ nd} ~ wwW|%|jjj |SW|%|jjj |S|%|jjj w)NFsrcdestr4 remote_srcyesregexpfollowr6rTzsrc and dest are required)strictzansible.legacy.assemble) module_name task_varsfileszSource (%s) is not a directory)all_varsrF)rCrEr4r6rchecksum)rAzansible.legacy.copy)rH module_argsrIdiffzansible.legacy.file)&_supports_check_modesuperr rundict_taskargsgetpoprr update_execute_moduler _find_needlerrr r%isdirrecompiler@r _remote_expand_user_execute_remote_statcopyrN_get_diff_data _connection_shell join_pathtmpdir_transfer_file _fixup_perms2rresult_remove_tmp_path)r2r9rIrgrArBr4rCrErFr6re_rer% path_checksum dest_statrNnew_module_argsopt remote_pathxferedres __class__rrrQRs         zActionModule.run)NNFT)NN)__name__ __module__ __qualname__TRANSFERS_FILESr@rQ __classcell__rrrrrr #s +r ) __future__rr.r os.pathr[ransiblerransible.errorsrrrr+ansible.module_utils.common.text.convertersrr )ansible.module_utils.parsing.convert_boolr ansible.plugins.actionr ansible.utils.hashingr r rrrrs