
    Vh                    D   d dl mZ d dlZd dlZd dlmc mc mZ d dl	m
Z
 ddddddd	ddd
ddddddddddddddddddddddddddddddddddddd dd!d"dd#d$dd%d&dd'd(dd)d*dd+d,dd-d"dd.d/dd0d1dd2d3dgZ G d4 d5e
      Z G d6 d7e
      Zy)8    )annotationsN)BaseFactCollectorz/usr/bin/rpm-ostreeatomic_container)pathnamez/usr/bin/yumdnfz/usr/bin/dnf-3/usr/bin/dnf5dnf5z/usr/bin/apt-getaptz/usr/bin/zypperzypperz/usr/sbin/urpmiurpmiz/usr/bin/pacmanpacmanz	/bin/opkgopkgz/usr/pkg/bin/pkginpkginz/opt/local/bin/pkginz/opt/tools/bin/pkginz/opt/local/bin/portmacportsz/usr/local/bin/brewhomebrewz/opt/homebrew/bin/brewz	/sbin/apkapkz/usr/sbin/pkgpkgngz/usr/sbin/swlistswdepotz/usr/bin/emergeportagez/usr/sbin/pkgaddsvr4pkg/usr/bin/pkgpkg5z/usr/bin/xbps-installxbpsz/usr/local/sbin/pkgz/usr/bin/swupdswupdz/usr/sbin/sorcerysorceryz/usr/bin/installpinstallpc                  *    e Zd ZdZ e       ZdZddZy)OpenBSDPkgMgrFactCollectorpkg_mgrOpenBSDNc                
    ddiS )Nr    openbsd_pkg )selfmodulecollected_factss      Y/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/system/pkg_mgr.pycollectz"OpenBSDPkgMgrFactCollector.collect8   s    =))    NN)__name__
__module____qualname__r   set	_fact_ids	_platformr)   r$   r*   r(   r   r   3   s    DII*r*   r   c                  `     e Zd ZdZ e       ZdZ edg      Z fdZd Z	d Z
d Zd	dZ xZS )
PkgMgrFactCollectorr    Genericdistributionc                :    t        t        | 
  |i | d| _        y )Nunknown)superr3   __init___default_unknown_pkg_mgr)r%   argskwargs	__class__s      r(   r9   zPkgMgrFactCollector.__init__C   s     !414B6B(1%r*   c                    t         j                  j                  d      rydD ]K  }t         j                  j                  |      s#t         j                  j                  |      dk(  rdc S dc S  | j                  S )Nz/run/ostree-bootedr   )z/usr/bin/dnfz/usr/bin/microdnfr	   r
   r   )osr   existsrealpathr:   )r%   bin_paths     r(   _check_rh_versionsz&PkgMgrFactCollector._check_rh_versionsG   si    77>>./%
 > 	ZHww~~h'!#!1!1(!;!NvYTYY	Z ,,,r*   c                4   dj                         }t        j                  j                  d      r@t	        t        j
                  d      5 }	 t        j                  |||       d}d d d        |S |S # t        j                  $ r d}Y #w xY w# 1 sw Y   |S xY w)Nz//usr/bin/rpm -q --whatprovides /usr/bin/apt-getz/usr/bin/rpmw)stdoutstderrapt_rpmr   )	splitr?   r   r@   opendevnull
subprocess
check_callCalledProcessError)r%   pkg_mgr_name	rpm_querynulls       r(   _check_apt_flavorz%PkgMgrFactCollector._check_apt_flavorT   s    
 FKKM	77>>.)bjj#& )$))))DN#,L) |	 "44 ) $)L)	) s*   
BA22B
B	B

BBc                @    |d   dk(  rt        d t              S t        S )Nansible_os_familyAltlinuxc                    | d   dk7  S )Nr   r   r$   )pkgs    r(   <lambda>z.PkgMgrFactCollector.pkg_mgrs.<locals>.<lambda>k   s    c&k^&C r*   )filterPKG_MGRS)r%   r'   s     r(   pkg_mgrszPkgMgrFactCollector.pkg_mgrse   s%    
 ./:=CXNNOr*   c                F   |xs i }| j                   }| j                  |      D ]*  }t        j                  j	                  |d         s&|d   }, |d   dk(  r| j                         }n|d   dk(  r|dk7  rd}n|d   dk(  r|dk(  rd}|dk(  r| j                  |      }d	|iS )
Nr   r   rT   RedHatDebianr   rU   rH   r    )r:   r[   r?   r   r@   rC   rR   )r%   r&   r'   rO   rW   s        r(   r)   zPkgMgrFactCollector.collecto   s    )/R44==1 	+Cww~~c&k*"6{	+ ./8;224L01X=,RWBW !L01Z?u$( 5 11,?L<((r*   r+   )r,   r-   r.   r   r/   r0   r1   required_factsr9   rC   rR   r[   r)   __classcell__)r=   s   @r(   r3   r3   =   s:    DII.)*N2-")r*   r3   )
__future__r   r?   rL   "ansible.module_utils.compat.typingmodule_utilscompattypingt$ansible.module_utils.facts.collectorr   rZ   r   r3   r$   r*   r(   <module>rh      s  
 # 	  . . B
 +4FG
 $U3%u5$f5'7&9&8&9 &1)7;+W=+W=*J?*J?-zB %0$g6';&	:';#V4,f=*G<%w7()<(*==D*!2 *K)+ K)r*   