
    Vh.                         d dl mZmZmZ eZdZdZd dlZd dl	m
Z
  G d de      Zd Zd	 Zdd
Zd Zd Zd ZddZd Zd Zd Zd Zedk(  r e        yy)    )absolute_importdivisionprint_functiona  
module: pkgin
short_description: Package manager for SmartOS, NetBSD, et al
description:
  - 'The standard package manager for SmartOS, but also usable on NetBSD or any OS that uses C(pkgsrc). (Home: U(http://pkgin.net/)).'
author:
  - "Larry Gilbert (@L2G)"
  - "Shaun Zinck (@szinck)"
  - "Jasper Lievisse Adriaanse (@jasperla)"
notes:
  - 'Known bug with pkgin < 0.8.0: if a package is removed and another package depends on it, the other package will be silently
    removed as well.'
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  name:
    description:
      - Name of package to install/remove;
      - Multiple names may be given, separated by commas.
    aliases: [pkg]
    type: list
    elements: str
  state:
    description:
      - Intended state of the package.
    choices: ['present', 'absent']
    default: present
    type: str
  update_cache:
    description:
      - Update repository database. Can be run with other steps or on its own.
    type: bool
    default: false
  upgrade:
    description:
      - Upgrade main packages to their newer versions.
    type: bool
    default: false
  full_upgrade:
    description:
      - Upgrade all packages to their newer versions.
    type: bool
    default: false
  clean:
    description:
      - Clean packages cache.
    type: bool
    default: false
  force:
    description:
      - Force package reinstall.
    type: bool
    default: false
a%  
- name: Install package foo
  community.general.pkgin:
    name: foo
    state: present

- name: Install specific version of foo package
  community.general.pkgin:
    name: foo-2.0.1
    state: present

- name: Update cache and install foo package
  community.general.pkgin:
    name: foo
    update_cache: true

- name: Remove package foo
  community.general.pkgin:
    name: foo
    state: absent

- name: Remove packages foo and bar
  community.general.pkgin:
    name: foo,bar
    state: absent

- name: Update repositories as a separate step
  community.general.pkgin:
    update_cache: true

- name: Upgrade main packages (equivalent to pkgin upgrade)
  community.general.pkgin:
    upgrade: true

- name: Upgrade all packages (equivalent to pkgin full-upgrade)
  community.general.pkgin:
    full_upgrade: true

- name: Force-upgrade all packages (equivalent to pkgin -F full-upgrade)
  community.general.pkgin:
    full_upgrade: true
    force: true

- name: Clean packages cache (equivalent to pkgin clean)
  community.general.pkgin:
    clean: true
N)AnsibleModulec                       e Zd ZdZdZdZdZy)PackageState            N)__name__
__module____qualname__PRESENTNOT_INSTALLEDOUTDATED	NOT_FOUND     k/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/pkgin.pyr   r      s    GMHIr   r   c                 ~   | j                  t        ddg      \  }}}|dk(  rdg}d}ng }d}| j                  t        g|z   dd|z  gz         \  }}}|dk(  r|j                  d      }|D ]  }|d	v s|j                  d
      r|j                  |      dd \  }	}
t	        j
                  d|	t        j                        }|sX|j                  d      }||	|fvrp|
dk(  rt        j                  c S |
dk(  s|
dk(  rt        j                  c S t        j                  c S  t        j                  S t        j                  S )zDSearch for the package by name and return state of the package.
    z-pz-vr   ; searchz^%s$
)zreading local summary...zprocessing local summary...z downloading pkg_summary.xz done.zprocessing remote summary (r
   z^(.*?)\-[0-9][0-9.]*(nb[0-9]+)*r	   <=>)run_command
PKGIN_PATHsplit
startswithrer   Mgroupr   r   r   r   r   )modulenamercouterrpflag	splitcharpackagespackagepkgname_with_version	raw_statepkg_search_objpkgname_without_versions                r   query_packager3      sz   
 %%z4&>?LBS	Qw		 %%zlU&:hQU=V&VWLBS 
Qw 99T? '	2G  @ @ ""#@A.5mmI.Fq.K+ )  YY'IK_acaeaefN " '5&:&:1&=#02IJJ C#,,,c!Y#%5#+++ $111O'	2V %%% !!!r   c                 R    ||d}| j                   rd|z  }nd|z  }|dk(  r|S |dz   S )N)actionedcountz)would have %(actioned)s %(count)d packagez%(actioned)s %(count)d packager	   s)
check_mode)r&   actionr6   varsmessages        r   format_action_messager<      sD    D =D2T9z}r   c                     |g }n|g}| j                   d   rdg}ng }| j                  rt        d|g|z   S t        dg|z   |gz   |z   S )Nforcez-Fz-nz-y)paramsr8   r    )r&   commandr.   r-   r>   s        r   format_pkgin_commandrA      sd     9}}WD'*X55D!E)WI5@@r   c                    d}|D ]  }t        | |      t        j                  t        j                  fv r0| j	                  t        | d|            \  }}}| j                  sFt        | |      t        j                  t        j                  fv r| j                  d|d|||       |dz  } |dkD  r| j                  dt        | d|      	       | j                  d
d	       y )Nr   removezfailed to remove : msgstdoutstderrr	   TremovedchangedrF   Fzpackage(s) already absent)r3   r   r   r   r   rA   r8   r   r   	fail_json	exit_jsonr<   )r&   r-   remove_cr.   r(   r)   r*   s          r   remove_packagesrO      s    H  )l.H.H,J`J`-aa)) 7;=C   ]67%CH\H\^j^s^sGt%tgs!KTW`cdA !|+@T\+]^
U(CDr   c                     d}|D ]  }t        | |      }|t        j                  t        j                  fv r2|t        j                  u r| j                  d|z         | j                  t        | d|            \  }}}| j                  sFt        | |      t        j                  t        j                  fvr| j                  d|d|||       |dz  } |dkD  r | j                  d	t        | d
|             | j                  dd       y )Nr   z*failed to find package %s for installation)rF   installzfailed to install rD   rE   r	   T	installed)rK   rF   rG   rH   Fzpackage(s) already presentrJ   )r3   r   r   r   r   rL   r   rA   r8   rM   r<   )r&   r-   	install_cr.   query_resultr(   r)   r*   s           r   install_packagesrU     s   I $VW5L00,2G2GHH\333!MPW!WX)) G<>C   vw)GLL`L`bnbwbwKx)xw!LUXadeQ	 1}+@V_+`iluxy
U(DEr   c                     | j                  t        | d            \  }}}|dk(  rt        j                  d|      ryy| j	                  d||       y )Nupdater   zdatabase for.*is up-to-date
$)Fzdatabase is up-to-date)Tzupdated repository databasezcould not update package dbrE   )r   rA   r#   r   rL   r&   r(   r)   r*   s       r   update_package_dbrY   *  sV    %%VX.0LBS 
Qw995s;26:3sSr   c                     |rd}nd}| j                  t        | |            \  }}}|dk(  r+t        j                  d|      r| j	                  dd       y y | j                  d|z  ||	       y )
Nzfull-upgradeupgrader   z^(.*
|)nothing to do.
$Fznothing left to upgraderJ   zcould not %s packagesrE   )r   rA   r#   r   rM   rL   )r&   fullcmdr(   r)   r*   s         r   do_upgrade_packagesr^   7  s}    %%VS)+LBS 
Qw990#6U0IJ 7 	4s:3sSr   c                     t        |        y Nr^   r&   s    r   upgrade_packagesrc   G  s
    r   c                     t        | d       y )NTra   rb   s    r   full_upgrade_packagesre   K  s    %r   c                     | j                  t        | d            \  }}}|dk(  r| j                  dd       y | j                  d||       y )Ncleanr   Tcleaned cachesrJ   zcould not clean package cacherE   )r   rA   rM   rL   rX   s       r   clean_cacheri   O  sX    %%VW-/LBS 
Qw 	+;<<SQTUr   c                     t        t        t        dddg      t        dgdd      t        dd	
      t        dd	
      t        dd	
      t        dd	
      t        dd	
            g dgd      } | j                  dddg      at        dddd      | _        | j
                  }|d   r0t        |       \  }}|d   s|d   s|d   s| j                  ||       |d   r#t        |        |d   s| j                  dd       |d   r#t        |        |d   s| j                  dd       |d   r#t        |        |d   s| j                  dd       |d   }|d   dk(  rt        | |       y |d   dk(  rt        | |       y y )Npresentabsent)defaultchoicespkgliststr)aliasestypeelementsFbool)rm   rs   )stater'   update_cacher[   full_upgraderg   r>   )r'   rw   r[   rx   rg   T)argument_specrequired_one_ofsupports_check_modepkginz/opt/local/binC)LANGLC_ALLLC_MESSAGESLC_CTYPErw   r'   r[   rx   rJ   zupgraded packageszupgraded all packagesrg   rh   rv   )r   dictget_bin_pathr    run_command_environ_updater?   rY   rM   rc   re   ri   rU   rO   )r&   pcrF   pkgss        r   mainr   [  s   y9h2GHugFUCe&9V4e&9u62u624 VV 
"F $$Wd5E4FGJ(,#cs]`(aF%A"6*3&	Qy\Q~->QC0| yT/BCf%yT/FGzFyT/?@V9DzY&	
7x	% 
 r   __main__r`   )F)
__future__r   r   r   rs   __metaclass__DOCUMENTATIONEXAMPLESr#   ansible.module_utils.basicr   objectr   r3   r<   rA   rO   rU   rY   r^   rc   re   ri   r   r   r   r   r   <module>r      s    A @:x.b 
 46 G"TA(E0F2
TT  &	V.&b zF r   