
    Vh2                         d dl mZmZmZ eZdZdZdZd dl	Z	d dl
mZ d dlmZmZ  G d d	e      Zd
 Zedk(  r e        yy)    )absolute_importdivisionprint_functiona  
module: snap_alias
short_description: Manages snap aliases
version_added: 4.0.0
description:
  - Manages snaps aliases.
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: full
options:
  state:
    description:
      - Desired state of the alias.
    type: str
    choices: [absent, present]
    default: present
  name:
    description:
      - Name of the snap.
    type: str
  alias:
    description:
      - Aliases to be created or removed.
    type: list
    elements: str
    aliases: [aliases]

author:
  - Alexei Znamensky (@russoz) <russoz@gmail.com>

seealso:
  - module: community.general.snap
a  
# Install "foo" and "bar" snap
- name: Create snap alias
  community.general.snap_alias:
    name: hello-world
    alias: hw

- name: Create multiple aliases
  community.general.snap_alias:
    name: hello-world
    aliases:
      - hw
      - hw2
      - hw3
    state: present # optional

- name: Remove one specific aliases
  community.general.snap_alias:
    name: hw
    state: absent

- name: Remove all aliases for snap
  community.general.snap_alias:
    name: hello-world
    state: absent
aJ  
snap_aliases:
  description: The snap aliases after execution. If called in check mode, then the list represents the state before execution.
  type: list
  elements: str
  returned: always
version:
  description: Versions of snap components as reported by C(snap version).
  type: dict
  returned: always
  version_added: 10.3.0
N)StateModuleHelper)snap_runnerget_versionc            	           e Zd Z ej                  d      Z e edddgd       ed       edddg	      d
ddddgfddddgdfgd      ZdZd Z	d Z
d Zd Zd ZddZd Zd Zy)	SnapAliasz(^(?P<snap>\S+)\s+(?P<alias>[\w-]+)\s+.*$strabsentpresent)typechoicesdefault)r   listaliases)r   elementsr   )statenamealiasr   r   r   T)argument_specrequired_ifsupports_check_modeFc                 x    | j                   j                  }|r|| j                  |      iS | j                         S N)varsr   _get_aliases_for_get_aliases)selfns     p/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/snap_alias.py_aliaseszSnapAlias._aliasesr   s5    IINN014((+,Jt7H7H7JJ    c                     t        | j                        | _        t        | j                        | j                  _        | j                  j                  d| j                         dd       y )Nsnap_aliasesT)changediff)r   modulerunnerr   r   versionsetr"   r   s    r!   __init_module__zSnapAlias.__init_module__v   sE    !$++.'4				ndmmodNr#   c                 B    | j                         | j                  _        y r   )r"   r   r%   r,   s    r!   __quit_module__zSnapAlias.__quit_module__{   s    !%		r#   c                       fd} j                  dd|      5 }|j                  d      } j                  dk\  r|j                   j                  _        |cd d d        S # 1 sw Y   y xY w)Nc                 Z   |ri S |j                         dd  D cg c]+  }
j                  j                  |j                               - }}|D cg c]$  }|j	                  d      |j	                  d      f& }}i }|D ]  \  }}	|j                  |g       |	gz   ||<     |S c c}w c c}w )N   snapr   )
splitlines_RE_ALIAS_LISTmatchstripgroupget)rcouterrar   entrysnap_alias_listresultsr3   r   r   s             r!   processz'SnapAlias._get_aliases.<locals>.process   s    	EH^^EUVWVXEYZt**00;ZGZX_`uF 3U[[5IJ`O`G. @e 'D" 5 ?@N [`s   0B#)B(state_alias nameT)check_rcoutput_processinfostate_alias   )r)   run	verbosityrun_infor   get_aliases_run_info)r   rA   ctxr   s   `   r!   r   zSnapAlias._get_aliases~   sd    	 [[+d7[S 	WZgg&g1G~~"14		.		 	 	s   >A##A,c                 B    | j                         j                  |g       S r   )r   r9   )r   r   s     r!   r   zSnapAlias._get_aliases_for   s      "&&tR00r#   Nc                 $   |rX|| j                   j                  vry"t        | j                   j                  |         S | j                   j                  |   v S t        fd| j                   j                  j	                         D              S )NFc              3   &   K   | ]  }|v  
 y wr    ).0r   r   s     r!   	<genexpr>z'SnapAlias._has_alias.<locals>.<genexpr>   s     S5G#Ss   )r   r%   boolanyvalues)r   r   r   s     `r!   
_has_aliaszSnapAlias._has_alias   sx    499111}DII224899DII224888S4993I3I3P3P3RSSSr#   c                    | j                   j                  D ]  }| j                  | j                   j                  |      r*d| _        | j                  dd      5 }|j                  | j                   j                  |       | j                  dk\  r|j                  | j                   _	        d d d         y # 1 sw Y   xY w)NTzstate_alias name aliascheck_mode_skiprG   r   rH   
r   r   rW   r   changedr)   rI   r   rJ   rK   )r   _aliasrM   s      r!   state_presentzSnapAlias.state_present   s    iioo 	:F??499>>6:#[[!94[P :TWGG		vGF~~*-0\\		*: :	:: :s   AB88C	c                     | j                   j                  s| j                  | j                   j                        rtd| _        | j                  dd      5 }|j                  | j                   j                         | j                  dk\  r|j                  | j                   _	        d d d        y y | j                   j                  D ]  }| j                  | j                   j                  |      s*d| _        | j                  dd      5 }|j                  | j                   j                  |       | j                  dk\  r|j                  | j                   _	        d d d         y # 1 sw Y   y xY w# 1 sw Y   xY w)NTrB   rY   rF   rH   zstate_alias aliasr[   r\   )r   rM   r^   s      r!   state_absentzSnapAlias.state_absent   s$   yytyy~~.#[[!3T[J :cGG		G8~~*-0\\		*: : / ))// >??499>>6:#'DL%8$O >SVDIIOO6J>>Q.14DII.> >>: :> >s   AE(AE4(E14E=	)NN)__name__
__module____qualname__recompiler5   dictr(   use_old_vardictr"   r-   r/   r   r   rW   r_   ra   rQ   r#   r!   r
   r
   a   s    RZZ KLNux.CYWe$v	{K
 i&'!23h 148
 !F OKO
1"1T:>r#   r
   c                  ,    t         j                          y r   )r
   executerQ   r#   r!   mainrk      s    r#   __main__)
__future__r   r   r   r   __metaclass__DOCUMENTATIONEXAMPLESRETURNre   Hansible_collections.community.general.plugins.module_utils.module_helperr   ?ansible_collections.community.general.plugins.module_utils.snapr   r   r
   rk   rb   rQ   r#   r!   <module>rt      s]    A @$L6
 
 f dS>! S>l zF r#   