
    Vh                     r    d dl mZmZmZ eZdZdZd dlZd dl	m
Z
 d ZddZd Zd	 Zd
 Zedk(  r e        yy)    )absolute_importdivisionprint_functiona  
module: swdepot
short_description: Manage packages with swdepot package manager (HP-UX)
description:
  - Will install, upgrade and remove packages with swdepot package manager (HP-UX).
notes: []
author: "Raul Melo (@melodous)"
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  name:
    description:
      - Package name.
    aliases: [pkg]
    required: true
    type: str
  state:
    description:
      - Whether to install (V(present), V(latest)), or remove (V(absent)) a package.
    required: true
    choices: ['present', 'latest', 'absent']
    type: str
  depot:
    description:
      - The source repository from which install or upgrade a package.
    type: str
ad  
- name: Install a package
  community.general.swdepot:
    name: unzip-6.0
    state: present
    depot: 'repository:/path'

- name: Install the latest version of a package
  community.general.swdepot:
    name: unzip
    state: latest
    depot: 'repository:/path'

- name: Remove a package
  community.general.swdepot:
    name: unzip
    state: absent
N)AnsibleModulec                 T    d } ||       } ||      }||k(  rd}|S ||k  rd}|S d}|S )zq Compare version packages.
        Return values:
        -1 first minor
        0 equal
        1 first greater c                     t        j                  dd|       j                  d      D cg c]  }t        |       c}S c c}w )Nz(\.0+)*$ .)resubsplitint)vxs     m/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/swdepot.py	normalizez"compare_package.<locals>.normalizeO   s2     "{B : @ @ EF1AFFFs   >r       )version1version2r   normalized_version1normalized_version2rcs         r   compare_packager   H   sV    G#H-#H-11
 I	 
2	2 I I    c                 ^   g d}|r|j                  d|g       |j                         | j                  |      \  }}}|dk(  rcdj                  fd|j	                  d      D              }t        j                  dd|      j                         j                         d	   }||fS d
}||fS )z< Returns whether a package is installed or not and version. )z/usr/sbin/swlistz-arevisionz-lproduct-sr   r	   c              3   ,   K   | ]  }|v s|  y wNr   ).0linenames     r   	<genexpr>z query_package.<locals>.<genexpr>e   s     R$TT\Rs   	Tz\s\s+|\t r   N)	extendappendrun_commandjoin
splitlinesr   r   stripr   )moduler%   depotcmd_listr   stdoutstderrversions    `      r   query_packager4   \   s     GHu&OOD++H5B	QwR&*;*;D*ARR&&c6288:@@B1E w; w;r   c                 N    d}| j                  ||g      \  }}}|dk(  r||fS ||fS )z! Uninstall package if installed. z/usr/sbin/swremover   r*   )r.   r%   
cmd_remover   r1   r2   s         r   remove_packager8   m   s@     &J++Z,>?B	Qw6z6zr   c                 Z    g d}| j                  |d||gz         \  }}}|dk(  r||fS ||fS )z* Install package if not already installed )z/usr/sbin/swinstallz-xzmount_all_filesystems=falser    r   r6   )r.   r/   r%   cmd_installr   r1   r2   s          r   install_packager;   y   sH     OK++K4:M,MNB	Qw6z6zr   c            
      >   t        t        t        dgd      t        g dd      t        d d            d	      } | j                  d
   }| j                  d   }| j                  d   }d}d}d}|dk(  s|dk(  r|d}| j                  |||       t	        | |      \  }}|sd}	d}nd}	|dk(  s|dk(  rN|	du rJ| j
                  r| j                  d       t        | ||      \  }}|sd}d}n| j                  |||       n|dk(  r|	du rt	        | ||      \  }}
|sbt        ||
      dk(  r| j
                  r| j                  d       t        | ||      \  }}|sd|z   dz   |
z   }d}n| j                  |||       nkd|z   }| j                  |||       nQ|dk(  rL|	du rH| j
                  r| j                  d       t        | |      \  }}|sd}d}n| j                  |||       | j
                  r| j                  d       | j                  ||||       y )NpkgT)aliasesrequired)presentabsentlatest)choicesr?   F)defaultr?   )r%   stater/   )argument_specsupports_check_moder%   rE   r/   z
No changedr   r@   rB   z6depot parameter is mandatory in present or latest task)r%   msgr   zAlready installed)changedzPackage installedr   zPackage upgraded, Before z Now z#Software package not in repository rA   zPackage removed)rI   r%   rE   rH   )
r   dictparams	fail_jsonr4   
check_mode	exit_jsonr;   r   r8   )r.   r%   rE   r/   rI   rH   r   outputversion_installed	installedversion_depots              r   mainrS      ss   ug5>Nte4

 !F == DMM'"EMM'"EG
C	
Bex/U]Id26 *&$7B	! 	ex/Y%5GT*$VUD9
FG%C $Fr:	(	yD0)&$>M0-@BF$$$$T$2,VUDA
F58IIGSVccC"G $$$Fr$B ;UBF$Fr:	(	yD0T*#FD1
FG#C$Fr:'
W4u#Fr   __main__r"   )
__future__r   r   r   type__metaclass__DOCUMENTATIONEXAMPLESr   ansible.module_utils.basicr   r   r4   r8   r;   rS   __name__r   r   r   <module>r\      sZ    A @B& 
 4("	LG^ zF r   