
    Vh                    Z    d dl mZ dZd dlZd dlZd dlZd dlmZ d dlm	Z	  G d de	      Z
y)    )annotationsal  
author: Unknown (!UNKNOWN)
name: say
type: notification
requirements:
  - whitelisting in configuration
  - the C(/usr/bin/say) command line program (standard on macOS) or C(espeak) command line program
short_description: notify using software speech synthesizer
description:
  - This plugin will use the C(say) or C(espeak) program to "speak" about play events.
N)get_bin_path)CallbackBasec                       e Zd ZdZdZdZdZdZ fdZd Z	ddZ
d	 Zdd
Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )CallbackModulez+
    makes Ansible much more exciting.
    g       @notificationzcommunity.general.sayTc                   t         t        |           d | _        d | _        d | _        d | _        	 t        d      | _        t        j                         dk7  r2| j                  j                  dt        j                          d       nd| _        d| _        d| _        d| _        | j                  sHd| _        | j                  j                  dt        j                   j#                  t$               d       y y # t        $ r@ 	 t        d	      | _        d
| _        d| _        d| _        n# t        $ r
 d | _        Y nw xY wY w xY w)NsayDarwinz&'say' executable found but system is 'z': ignoring voice parameterZarvoxTrinoidsCellosPrincessespeakklattf5whisperTz;Unable to find either 'say' or 'espeak' executable, plugin z	 disabled)superr   __init__FAILED_VOICEREGULAR_VOICEHAPPY_VOICELASER_VOICEr   synthesizerplatformsystem_displaywarning
ValueErrordisabledospathbasename__file__)self	__class__s    j/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/callback/say.pyr   zCallbackModule.__init__'   s:   nd,. !	(+E2D H,%%(NxO`Naa|&}~$,!%/"#+ #-   DMMM!!$_`b`g`g`p`pqy`z_{  |E  #F  G    	((#/#9 $+!#' #,  (#' (	(s6   A5C; ;	E%D+*E+D>;E=D>>EEc                t    | j                   |g}|r|j                  d|f       t        j                  |       y )Nz-v)r   extend
subprocesscall)r%   msgvoicecmds       r'   r
   zCallbackModule.sayI   s1    %JJe}%    c                B    | j                  d| | j                         y NzFailure on host r
   r   )r%   hostresignore_errorss       r'   runner_on_failedzCallbackModule.runner_on_failedO       #D6*D,=,=>r/   c                <    | j                  d| j                         y Npewr
   r   r%   r3   r4   s      r'   runner_on_okzCallbackModule.runner_on_okR       (()r/   c                <    | j                  d| j                         y r9   r;   )r%   r3   items      r'   runner_on_skippedz CallbackModule.runner_on_skippedU   r>   r/   c                B    | j                  d| | j                         y r1   r2   r<   s      r'   runner_on_unreachablez$CallbackModule.runner_on_unreachableX   r7   r/   c                <    | j                  d| j                         y r9   r;   r%   r3   r4   jids       r'   runner_on_async_okz!CallbackModule.runner_on_async_ok[   r>   r/   c                B    | j                  d| | j                         y r1   r2   rE   s       r'   runner_on_async_failedz%CallbackModule.runner_on_async_failed^   r7   r/   c                <    | j                  d| j                         y )NzRunning Playbookr
   r   r%   s    r'   playbook_on_startz CallbackModule.playbook_on_starta   s    #T%7%78r/   c                <    | j                  d| j                         y r9   r;   )r%   r3   handlers      r'   playbook_on_notifyz!CallbackModule.playbook_on_notifyd   r>   r/   c                    |s | j                  d| | j                         y | j                  d| | j                         y )NzStarting task: zNotifying task: rK   )r%   nameis_conditionals      r'   playbook_on_task_startz%CallbackModule.playbook_on_task_startg   s<    HHtf-t/A/ABHH'v.0B0BCr/   c                <    | j                  d| j                         y )NzGathering factsrK   rL   s    r'   playbook_on_setupz CallbackModule.playbook_on_setupm   s    "D$6$67r/   c                B    | j                  d| | j                         y )NzStarting play: r
   r   )r%   rR   s     r'   playbook_on_play_startz%CallbackModule.playbook_on_play_startp   s    ?4&)4+;+;<r/   c                <    | j                  d| j                         y )NzPlay completerX   )r%   statss     r'   playbook_on_statsz CallbackModule.playbook_on_statss   s    $"2"23r/   )F)N)__name__
__module____qualname____doc__CALLBACK_VERSIONCALLBACK_TYPECALLBACK_NAMECALLBACK_NEEDS_WHITELISTr   r
   r6   r=   rA   rC   rG   rI   rM   rP   rT   rV   rY   r\   __classcell__)r&   s   @r'   r   r      si     "M+M# GD?**?*?9*D8=4r/   r   )
__future__r   DOCUMENTATIONr   r*   r!   #ansible.module_utils.common.processr   ansible.plugins.callbackr   r    r/   r'   <module>rk      s0    #
   	 < 1V4\ V4r/   