
    w                         d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ dZdZ G d de	j                         Zd Zd Zd ZddZ G d dej,                        Zy)z-Utility functions for gcloud pubsub emulator.    )absolute_import)division)unicode_literalsN)util)
exceptions)execution_utils)log)	platformspubsubzGoogle Cloud Pub/Sub emulatorc                       e Zd Zy)InvalidArgumentErrorN)__name__
__module____qualname__     7lib/googlecloudsdk/command_lib/emulators/pubsub_util.pyr   r       s    r   r   c                  4    t        j                  t              S N)r   
GetDataDirPUBSUBr   r   r   r   r   %   s    		  r   c                 D   t        j                  t              }|t        j                  j
                  u r6t        j                  j                  |d      }t        j                  |g|  S t        j                  j                  |d      }t        j                  |g|  S )zBuilds the command for starting the pubsub emulator.

  Args:
    args: (list of str) The arguments for the pubsub emulator, excluding the
      program binary.
    current_os: (platforms.OperatingSystem)

  Returns:
    A list of command arguments.
  zbin\cloud-pubsub-emulator.batzbin/cloud-pubsub-emulator)r   GetEmulatorRootr   r
   OperatingSystemWINDOWSospathjoinr   ArgsForCMDToolArgsForExecutableTool)args
current_os
pubsub_dirpubsub_executables       r   BuildStartArgsr%   )   s     ##F+*9,,44446))*;CdCCggll:/JK		.	./@	H4	HHr   c                 d    d| j                   j                  d| j                   j                  iS )zCReturns an environment variable mapping from an argparse.Namespace.PUBSUB_EMULATOR_HOST:)	host_porthostport)r!   s    r   GetEnvr,   >   s0    
 #'>>#6#68K8K#M 
N Nr   c                     t        t        j                  |       t        j                  j                               }t        j                  j                  dj                  dj                  |                   t        j                  ||      S )NzExecuting: {0} )log_file)r%   r   BuildArgsListr
   r   Currentr	   statusPrintformatr   Exec)r!   r/   pubsub_argss      r   Startr7   D   sd    
	 9 9 A A CE+**#**388K+@AB	;	22r   c                   V    e Zd ZdZd Zed        Zed        Zed        Zed        Z	y)PubsubEmulatorz:Represents the ability to start and route pubsub emulator.c                 j    t        j                  dd|di      }t        || j                               S )Nr)   z::1)r*   r+   )r   AttrDictr7   	_GetLogNo)selfr+   r!   s      r   r7   zPubsubEmulator.StartN   s.    ==+t'DEFDt~~'((r   c                 
    g dS )N)zgoogle.pubsub.v1.Publisherzgoogle.pubsub.v1.Subscriberz#google.pubsub.v1.AcknowledgeRequestz*google.pubsub.v1.DeleteSubscriptionRequestz#google.pubsub.v1.DeleteTopicRequestz'google.pubsub.v1.GetSubscriptionRequestz google.pubsub.v1.GetTopicRequestz)google.pubsub.v1.ListSubscriptionsRequestz*google.pubsub.v1.ListSubscriptionsResponsez.google.pubsub.v1.ListTopicSubscriptionsRequestz/google.pubsub.v1.ListTopicSubscriptionsResponsez"google.pubsub.v1.ListTopicsRequestz#google.pubsub.v1.ListTopicsResponsez)google.pubsub.v1.ModifyAckDeadlineRequestz(google.pubsub.v1.ModifyPushConfigRequestzgoogle.pubsub.v1.PublishRequestz google.pubsub.v1.PublishResponsezgoogle.pubsub.v1.PubsubMessagezgoogle.pubsub.v1.PullRequestzgoogle.pubsub.v1.PullResponsezgoogle.pubsub.v1.PushConfigz google.pubsub.v1.ReceivedMessagezgoogle.pubsub.v1.Subscriptionzgoogle.pubsub.v1.Topicr   r=   s    r   prefixeszPubsubEmulator.prefixesR   s     r   c                     t         S r   )r   r?   s    r   service_namezPubsubEmulator.service_names   s    Mr   c                     t         S r   )PUBSUB_TITLEr?   s    r   emulator_titlezPubsubEmulator.emulator_titlew   s    r   c                      y)Nzpubsub-emulatorr   r?   s    r   emulator_componentz!PubsubEmulator.emulator_component{   s    r   N)
r   r   r   __doc__r7   propertyr@   rB   rE   rG   r   r   r   r9   r9   K   s[    B)  @      r   r9   r   )rH   
__future__r   r   r   r   $googlecloudsdk.command_lib.emulatorsr   googlecloudsdk.corer   r   r	   googlecloudsdk.core.utilr
   r   rD   Errorr   r   r%   r,   r7   Emulatorr9   r   r   r   <module>rP      sg    4 &  ' 	 5 * / # .	.:++ 
!I*N32T]] 2r   