
    Vh                     n    d dl mZmZmZ eZdZdZd dlm	Z	 d Z
d Zd Zd Zd	 Zd
 Zedk(  r e        yy)    )absolute_importdivisionprint_functionu  
module: slackpkg
short_description: Package manager for Slackware >= 12.2
description:
  - Manage binary packages for Slackware using C(slackpkg) which is available in versions after 12.2.
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  name:
    description:
      - Name of package to install/remove.
    required: true
    type: list
    elements: str
    aliases: [pkg]

  state:
    description:
      - State of the package, you can use V(installed) as an alias for V(present) and V(removed) as one for V(absent).
    choices: ['present', 'absent', 'latest', 'installed', 'removed']
    required: false
    default: present
    type: str

  update_cache:
    description:
      - Update the package database first.
    required: false
    default: false
    type: bool

author: Kim Nørgaard (@KimNorgaard)
requirements: ["Slackware >= 12.2"]
a8  
- name: Install package foo
  community.general.slackpkg:
    name: foo
    state: present

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

- name: Make sure that it is the most updated package
  community.general.slackpkg:
    name: foo
    state: latest
)AnsibleModulec                 H   dd l }dd l}dd l}|j                         }|dk(  r|dk(  rd}|j	                  d|j                  |      d|j                  |      d      }|j                  d      D cg c]  }|j                  |      s| }	}t        |	      dkD  ry	y
c c}w )Nr   zkernel-headersx86_64x86^z-[^-]+-(z|noarch|fw)-[^-]+$z/var/log/packagesTF)	platformosremachinecompileescapelistdirmatchlen)
moduleslackpkg_pathnamer   r   r   r   patternfpackagess
             n/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/slackpkg.pyquery_packager   N   s     GGx$7jjbiioryyY`OabcG::&9:OagmmA>NOHO
8}q Ps   2B	Bc                 F   d}|D ]l  }t        | ||      s| j                  s| j                  |ddd|g      \  }}}| j                  s%t        | ||      r| j                  d|d       |dz  }n |dkD  r| j	                  d	d
|z         | j	                  dd       y )Nr   -default_answer=y	-batch=onremovezfailed to remove : msg   Tzremoved %s package(s)changedr"   Fzpackage(s) already absentr   
check_moderun_command	fail_json	exit_json)r   r   r   remove_cpackagercouterrs           r   remove_packagesr0   a   s    H V]G<  !-- 3[(GTVLBS   ]6=3:&<gs!KLA !|+BX+MN
U(CD    c                 H   d}|D ]m  }t        | ||      r| j                  s| j                  |ddd|g      \  }}}| j                  s&t        | ||      s| j                  d|d       |dz  }o |dkD  r| j	                  d	d
|z         | j	                  dd       y )Nr   r   r   installfailed to install r    r"   stderrr#   Tpresent %s package(s)r$   Fpackage(s) already presentr&   r   r   r   	install_cr,   r-   r.   r/   s           r   install_packagesr;   {   s    I 8  !-- 3[)WUWLBS   v}7>*@w!L$'  ) 	Q	 1}+B%,' 	( U(DEr1   c                 ,   d}|D ]_  }| j                   s| j                  |ddd|g      \  }}}| j                   s&t        | ||      s| j                  d|d       |dz  }a |dkD  r| j	                  d	d
|z         | j	                  dd       y )Nr   r   r   upgrader4   r    r5   r#   Tr7   r$   Fr8   )r'   r(   r   r)   r*   r9   s           r   upgrade_packagesr>      s    I 
  !-- 3[)WUWLBS   v}7>*@w!L$'  ) 	Q	
 1}+B%,' 	( U(DEr1   c                 d    | j                  |ddg      \  }}}|dk7  r| j                  d       y y )Nr   updater   zCould not update package cacher!   )r(   r)   )r   r   r-   r.   r/   s        r   update_cacherA      s@    %%	X.0LBS	Qw=> r1   c                  j   t        t        t        dg d      t        dgddd      t        d	d
            d      } | j                  dd      }| j                  }|d   }|d   rt	        | |       |d   dk(  rt        | ||       y |d   dv rt        | ||       y |d   dv rt        | ||       y y )Npresent)	installedremovedabsentrC   latest)defaultchoicespkgTliststr)aliasesrequiredtypeelementsFbool)rH   rO   )stater   rA   )argument_specsupports_check_modeslackpkgr   rA   rR   rG   )rC   rD   )rE   rF   )r   dictget_bin_pathparamsrA   r>   r;   r0   )r   r   ppkgss       r   mainr[      s    y2ijug6ERe&9

 !"F ''
D9MAV9DV]+zX5	
7/	/5	
7,	,t4 
-r1   __main__N)
__future__r   r   r   rO   __metaclass__DOCUMENTATIONEXAMPLESansible.module_utils.basicr   r   r0   r;   r>   rA   r[   __name__ r1   r   <module>rd      s\    A @&P" 5&E4F4F,?58 zF r1   