
                             d Z ddlZddlZddlmZ ddlmZ ddlmZ dZ	dZ
ddZ G d	 d
ej                        Z G d dej                        Zy)zCSpanner cli library functions and utilities for the spanner binary.    N)binary_operations)
exceptions)execution_utilssqlzspanner-clic                     t        j                  t        j                        }| r|j	                  |        |r|D ]  }|j                  |        |S )z6Return an env dict to be passed on command invocation.)copydeepcopyosenvironupdatepop)
extra_varsexclude_varsenvkeys       5lib/googlecloudsdk/command_lib/spanner/cli_backend.pyGetEnvArgsForCommandr      s@    bjj!#JJz	ggcl 	*    c                       e Zd ZdZy)SpannerCliExceptionzCBase Exception for any errors raised by gcloud spanner cli surface.N)__name__
__module____qualname____doc__ r   r   r   r   (   s    Kr   r   c                   ^     e Zd ZdZ fdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZ xZS )SpannerCliWrapperz@Wrapper for spanner cli commands which calls the spanner binary.c                 :    t        t        | 
  dt        dd| y )NT)binaryinstall_if_missingr   )superr   __init___SPANNER_CLI_BINARY)selfkwargs	__class__s     r   r"   zSpannerCliWrapper.__init__/   s(    	
T+ " r   c                    ~t         f}|r	|d| fz  }|r	|d| fz  }|r	|d| fz  }|r	|d| fz  }|r|r|d| d| fz  }n|r	|d| fz  }|r	|d| fz  }|	r|dz  }|
s|d	k(  r|d
z  }|r	|d| fz  }|r	|d| fz  }|r|dz  }|r|dz  }|r|dz  }|r	|d| fz  }|r	|d| fz  }|r	|d| fz  }|r	|d| fz  }|r	|d| fz  }|S )Nz
--project=z--database=z--instance=z--role=z--deployment-endpoint=:z--idle-transaction-timeout=)z--skip-column-namesOFF)z--skip-system-commandz	--prompt=z--delimiter=)z--table)z--html)z--xmlz
--execute=z	--source=z--tee=z--init-command=z--init-command-add=)_BASE_COMMAND)r$   projectdatabaseinstancedatabase_rolehostportapi_endpointidle_transaction_timeoutskip_column_namesskip_system_commandsystem_commandprompt	delimitertablehtmlxmlexecutesourceteeinit_commandinit_command_addverboser%   formatted_argumentss                            r   _ParseArgsForCommandz&SpannerCliWrapper._ParseArgsForCommand6   s   4 	(*
7)466H:688H:688799 6tfAdVDFF	 6|nEGG'(@'A
B  55n577	&244YK8::\)[(
Z'
7)466	&244
sen..~>@@ 34D3EFHHr   c                 .    t        j                  |       y)z5Call the spanner cli binary with the given arguments.N)r   Exec)r$   cmdstdinr   r%   s        r   _ExecutezSpannerCliWrapper._Execute   s    r   )NNNNNNNNFFr)   NNFFFNNNNNFNN)r   r   r   r   r"   rB   rG   __classcell__)r&   s   @r   r   r   ,   s[    H #

/GRr   r   rH   )r   r   r
   &googlecloudsdk.command_lib.util.anthosr   googlecloudsdk.corer   c_exceptr   r*   r#   r   Errorr   BinaryBackedOperationr   r   r   r   <module>rO      sS    J  	 D 6 / # L(.. LU)?? Ur   