
    VhC                        d dl m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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 d dlmZ d d	lmZ  G d
 de      Zd Zd Zd Zy)    )annotationsN)import_module)LooseVersion)	constants)AnsibleError)to_bytes	to_nativeto_text)ps_module_utils_loader)resource_from_fqcrc                  .    e Zd Zd ZddZd ZddZd Zy)	PSModuleDepFinderc                   t               | _        t               | _        t               | _        t               | _        d | _        d | _        d| _        t        j                  t        d            g| _        t        j                  t        d            g| _        t        j                  t        d            t        j                  t        d            g| _        t        j                  t        d            | _        t        j                  t        d            | _        t        j                  t        d            | _        t        j                  t        d	            | _        y )
NFz`(?i)^using\s((Ansible\..+)|(ansible_collections\.\w+\.\w+\.plugins\.module_utils\.[\w\.]+));\s*$z(?i)^#\s*ansiblerequires\s+-csharputil\s+((Ansible\.[\w\.]+)|(ansible_collections\.\w+\.\w+\.plugins\.module_utils\.[\w\.]+)|(\.[\w\.]+))(?P<optional>\s+-Optional){0,1}z?(?i)^#\s*requires\s+\-module(?:s?)\s*(Ansible\.ModuleUtils\..+)z(?i)^#\s*ansiblerequires\s+-powershell\s+((Ansible\.ModuleUtils\.[\w\.]+)|(ansible_collections\.\w+\.\w+\.plugins\.module_utils\.[\w\.]+)|(\.[\w\.]+))(?P<optional>\s+-Optional){0,1}z+(?i)^#\s*ansiblerequires\s+-wrapper\s+(\w*)z5(?i)^#requires\s+\-version\s+([0-9]+(\.[0-9]+){0,3})$z>(?i)^#ansiblerequires\s+\-osversion\s+([0-9]+(\.[0-9]+){0,3})$z!(?i)^#ansiblerequires\s+\-become$)dict
ps_modulesexec_scriptscs_utils_wrappercs_utils_module
ps_version
os_versionbecomerecompiler   _re_cs_module_re_cs_in_ps_module_re_ps_module_re_wrapper_re_ps_version_re_os_version
_re_become)selfs    [/home/dcms/DCMS/lib/python3.12/site-packages/ansible/executor/powershell/module_manifest.py__init__zPSModuleDepFinder.__init__   s&   & F
 !%#v
 JJx !i j k
 JJx !O P Q	$
  JJx bcd JJx !O P Q
 ::h/]&^_ jj2j)kl jj2s)tu**X.R%ST    Nc           	     <   |j                  d      }t               }|r| j                  }n| j                  }|r)| j                  | j
                  df| j                  |dfg}n| j                  |dfg}|D ]  }	|D ]  }
|
d   D ]  }|j                  |	      }|st        |j                  d      j                               }|j                         }|j                  dd       d u}||
d   j                         vr|j                  ||
d   ||f          |r| j                   j                  |	      }|r| j#                  |d       | j$                  j                  |	      }|r| j#                  |d	       | j&                  s$| j(                  j                  |	      }|rd
| _        |s7| j*                  j                  |	      }|sV| j-                  |j                  d      j                                 t        |      D ]  } | j.                  |d|i  y )N   
.psm1z.csr      optional   r   r   Twrapper)splitsetr   r   r   r   r   r   matchr
   grouprstrip	groupdictgetkeysaddr   _parse_version_matchr   r   r    r   scan_exec_script_add_module)r!   module_datafqnr+   
powershelllinesmodule_utilscs_utilscheckslinecheckpatternr.   module_util_name
match_dictr)   ps_version_matchos_version_matchbecome_matchwrapper_matchms                        r"   scan_modulezPSModuleDepFinder.scan_moduleN   s   !!%(u,,H++H ##T__g>))8U;F ##Xu5F
  "	KD $Qx G#MM$/E ,35;;q>3H3H3J+K(%*__%6
#->>*d#C4#O+58==?B(,,.>a#x-XY #'#6#6#<#<T#B #--.>M#'#6#6#<#<T#B #--.>M {{#'??#8#8#>L#&* $ 0 0 6 6t < ))-*=*=a*@*G*G*IJE"	KL \" 	2ADa11	2r$   c                b   t        |      }|| j                  j                         v ry t        j                  dt        |dz               }|t        d|z        t        |      }t        j                  r|}nt        |      }t        |      | j                  |<   | j                  |dd       y )Nzansible.executor.powershellz.ps1z2Could not find executor powershell script for '%s'T)r+   r:   )r
   r   r3   pkgutilget_datar	   r   r   CDEFAULT_DEBUG_strip_commentsrI   )r!   namedatab_dataexec_scripts        r"   r6   z"PSModuleDepFinder.scan_exec_script   s     t}4$$))++ =yPV?WX<  *,0 1 2 2 $ ?? K)&1K"*;"7$$?r$   c                   t        |      }d }|j                  d      r?t        j                  ||      }|s|ry t	        d|z        t        t        |            }	n/|j                  d      }
|j                  d      r5|j                  d      }|
D ]	  }|r n|d=  ||
D cg c]  }|s|	 c}z   }
t        dj                  |
d d       d      }t        |
d   |z   d      }	 t        |      }t        j                  ||      }|t        d      t        |d      }	t        |d|
d   dd      }t        |j                        }t!        |      d	k7  rt	        d
|z        t"        j$                  j                  |d   |      }|	t        |      d}|dk(  r|| j.                  |<   n!|r|| j0                  |<   n|| j2                  |<   | j5                  |	|||dk(         y c c}w # t        t&        f$ rP}t)        |dt*        j,                        t*        j,                  k(  r|rY d }~y t	        dt        |      z         d }~ww xY w)NzAnsible.z4Could not find imported module support code for '%s'.surrogate_or_strict)errorszNo package data found r(   zrInternal error: Referenced module_util package '%s' contains 0 or multiple import locations when we only expect 1.r   errnoz?Could not find collection imported module support code for '%s')rQ   pathr'   )r9   r+   r:   )r
   
startswithr   find_pluginr   r   _slurpr,   r	   joinr   rK   rL   ImportErrorlist__path__lenosr[   OSErrorgetattrrZ   ENOENTr   r   r   rI   )r!   rP   extr9   r)   r+   rH   util_fqnmu_pathmodule_util_data
submodulesfqn_submodules	submodulesn_package_namen_resource_namemodule_utilpkg_dataresource_pathserr	util_infos                        r"   r7   zPSModuleDepFinder._add_module   sj   DM<<
#,88C@G" $023$4 5 5  (w8 J||C !$3!+ +I &r*+
 ,*.JQq.JJ
&sxx
3B'@I^_N'
2(<EZ[O+N;"++NOL#%&=>>#+H=R#S "~z"~#NWlm "&k&:&:!;~&!+& (QSa(b c c'',,~a'8/J %G$
	 '>!*DOOA+4%%a(*3$$Q')xVY]dVdfW /K*  ) 	36%,,F&'j)21(6 7 7 	s+   $G*,G*(B%G/ /I>.I	1I		Ic                   t        |j                  d            j                         }|j                  d      d|z  }t        | |d       }|t	        | ||       y t        |      t        |      kD  rt	        | ||       y y )Nr(   r*   z%s.0)r
   r/   r0   rf   setattrr   )r!   r.   	attributenew_versionexisting_versions        r"   r5   z&PSModuleDepFinder._parse_version_match   s    ekk!n-446 ;;q>! ;.K"4D9#D)[1 K(<8H+IIi5 Jr$   )NFT)F)__name__
__module____qualname__r#   rI   r6   r7   r5    r$   r"   r   r      s"    2Uh=2~@,GgR6r$   r   c                    t         j                  j                  |       s+t        dt         j                  j	                  |       z        t        | d      }|j                         }|j                          |S )Nz1imported module support code does not exist at %srb)rd   r[   existsr   abspathopenreadclose)r[   fdrQ   s      r"   r^   r^      s\    77>>$NWW__T23 4 	4	dD	B779DHHJKr$   c                   g }d}| j                         D ]d  }|j                         }|r|j                  d      rd})|r,|j                  d      rd}@|r|j                  d      rT|j	                  |       f dj                  |      S )NFs   #>s   <#T   #r&   )
splitlinesstripendswithr\   appendr_   )sourcebufstart_blockr?   ls        r"   rO   rO     s    
CK!!# JJL1::e,K\\% Kall4(

4 ::c?r$   c           
     .	   t               }|
dk7  r|j                  | ||
dk(         d|
z  }t        t        t	        j
                  |             t               t               t               ||g|d      }|j                  |       |dkD  r|j                  d       |j                  d	       |j                  d
       |d   j                  dd	       |d   j                  dd
       dt        j                  d       |d<   ||d<   t        j                  j                  d|      |d<   |rTt        |      dk(  rF|j                  d       |j                  d       |d   j                  dd       ||d<   ||d<   |	|d<   |j                  |d<   |j                   |d<   |j"                  rMd|d   vrF|j                  d       |j                  d       |d   j                  dd       d|d<   d |d<   d |d<   t        |t               d       }t        j                  j                  d|      }|rA|
dk(  r<|j                  d       ||d<   t        j                  j                  d|      }||d <   t%        |j&                        dkD  st%        |j(                        dkD  r|j+                  d!d"d dd#       d|j,                  j/                         v }|j                  d       |j,                  dxx   d$z  cc<   |j,                  d   }|s|j,                  j1                  d       |j,                  j3                         D ](  \  }}t        t	        j
                  |            }|||<   * |j4                  j3                         D ]9  \  }}t        t	        j
                  |d%               }||d&   |<   |d'   |d(   |<   ; i }|j&                  |j(                  fD ]"  }|j3                         D ]  \  }}|d%   ||<    $ |j3                         D ]+  \  }}t        t	        j
                  |            }||d)   |<   - t        |j(                  j/                               |d*<   d|v r||d+<   t7        t9        j:                  |            }|d,z   |z   }|S )-Nscriptr:   )r9   r:   zmodule_%s_wrapperF)module_entrypowershell_modulescsharp_utilscsharp_utils_modulemodule_argsactionsenvironmentencoded_outputr   exec_wrapperasync_watchdogasync_wrapperr   jl   J)	async_jidasync_timeout_secWIN_ASYNC_STARTUP_TIMEOUT)	variablesasync_startup_timeoutrunasbecome_wrapperbecome_userbecome_passwordbecome_flagsmin_ps_versionmin_os_versionSYSTEM)module_pathmodule_util_pathsoutputCOVERAGE_REMOTE_OUTPUTcoverage_wrapperr   COVERAGE_REMOTE_PATHSpath_filters   Ansible.ModuleUtils.AddTyper'   )r+   s   

rQ   r   r[   r   r   r   coverages       )r   rI   r   r
   base64	b64encodera   r6   insertsecrets	randbelowrM   configget_config_valuer   r   r   r   rc   r   r   r7   r   r3   popitemsr   r   jsondumps)b_module_datar   r   r   async_timeoutr   become_methodr   r   r   substyle	task_vars
module_fqnfindermodule_wrapperexec_manifestcoverage_manifestcoverage_outputcoverage_enabledexec_requiredr   rP   rQ   b64_datar=   cs_utilb_jsonrR   s                               r"   _create_powershell_wrapperr     s     F8 	=jhR^F^`(83NV--m<=6V F 	M N+q/ 010i ''+;<i ''?;'():):<)H(I%Jk"-:)*121J1JKfr{1J1|-.$]3w>/ 01i ''+;<'2m$+:'((4n%&,&7&7M"#&,&7&7M"#}})y1II/ 01i ''+;<'/m$+/'((,n%&
 hh//0HT]/^O8|3 23&5(#88445LXa4b+;-( 6""#a'3v/E/E+F+J97D%#( 	 	* #f&9&9&>&>&@@M
N+
'72'&&~6L/))//1 '
d6++D12&d' ''--/ D
d6++DL9:4<*+D17;F|-.t4D
 H++V-C-CD *!--/ 	*JD$!&\HTN	** nn& 7
d6++D12.6n%d+7 ,00F0F0K0K0M+NM'( ]*$5j!djj/0FK'&0FMr$   )
__future__r   r   rZ   r   rd   rK   r   r   	importlibr   #ansible.module_utils.compat.versionr   ansibler   rM   ansible.errorsr   +ansible.module_utils.common.text.convertersr   r	   r
   ansible.plugins.loaderr   ansible.utils.collection_loaderr   objectr   r^   rO   r   r   r$   r"   <module>r      sV    #    	   	 # < " ' T T 9 >b6 b6J,tr$   