
    w                         S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SrSr " S S\	R                   5      rS rS rS rSS jr " S S\R,                  5      rg)z-Utility functions for gcloud pubsub emulator.    )absolute_import)division)unicode_literalsN)util)
exceptions)execution_utils)log)	platformspubsubzGoogle Cloud Pub/Sub emulatorc                       \ rS rSrSrg)InvalidArgumentError     N)__name__
__module____qualname____firstlineno____static_attributes__r       7lib/googlecloudsdk/command_lib/emulators/pubsub_util.pyr   r       s    r   r   c                  6    [         R                  " [        5      $ N)r   
GetDataDirPUBSUBr   r   r   r   r   %   s    		  r   c                 L   [         R                  " [        5      nU[        R                  R
                  L a7  [        R                  R                  US5      n[        R                  " U/U Q76 $ [        R                  R                  US5      n[        R                  " U/U Q76 $ )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                 h    SU R                   R                  < SU R                   R                  < 30$ )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                    [        [        R                  " U 5      [        R                  R                  5       5      n[        R                  R                  SR                  SR                  U5      5      5        [        R                  " X!S9$ )NzExecuting: {0} )log_file)r(   r   BuildArgsListr
   r   Currentr	   statusPrintformatr!   Exec)r$   r2   pubsub_argss      r   Startr:   D   sb    
	 9 9 A A CE+**#**388K+@AB	;	22r   c                   ^    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	\S 5       r
Srg	)
PubsubEmulatorK   z:Represents the ability to start and route pubsub emulator.c                 j    [         R                  " SSUS.05      n[        X R                  5       5      $ )Nr,   z::1)r-   r.   )r   AttrDictr:   	_GetLogNo)selfr.   r$   s      r   r:   PubsubEmulator.StartN   s,    ==+t'DEFD~~'((r   c                 
    / SQ$ )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   rA   s    r   prefixesPubsubEmulator.prefixesR   s     r   c                     [         $ r   )r   rD   s    r   service_namePubsubEmulator.service_names   s    Mr   c                     [         $ r   )PUBSUB_TITLErD   s    r   emulator_titlePubsubEmulator.emulator_titlew   s    r   c                     g)Nzpubsub-emulatorr   rD   s    r   emulator_component!PubsubEmulator.emulator_component{   s    r   r   N)r   r   r   r   __doc__r:   propertyrE   rH   rL   rO   r   r   r   r   r<   r<   K   s[    B)  @      r   r<   r   )rQ   
__future__r   r   r   r   $googlecloudsdk.command_lib.emulatorsr   googlecloudsdk.corer   r   r	   googlecloudsdk.core.utilr
   r   rK   Errorr   r   r(   r/   r:   Emulatorr<   r   r   r   <module>rY      sg    4 &  ' 	 5 * / # .	.:++ 
!I*N32T]] 2r   