
                         l    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Zd Z	d Z
d	 Zd
 Zd Zd Zy)z7'functions deploy' utilities for environment variables.    )absolute_import)division)unicode_literalsN)map_utilc                     | st        j                  d      | j                  d      rt        j                  d      d| v rt        j                  d      | S )zValidator for environment variable keys.

  Args:
    key: The environment variable key.

  Returns:
    The environment variable key.
  Raises:
    ArgumentTypeError: If the key is not a valid environment variable key.
  z*Environment variable keys cannot be empty.	X_GOOGLE_zEnvironment variable keys that start with `X_GOOGLE_` are reserved for use by deployment tools and cannot be specified manually.=z-Environment variable keys cannot contain `=`.)argparseArgumentTypeError
startswithkeys    Clib/googlecloudsdk/command_lib/functions/v2/deploy/env_vars_util.pyEnvVarKeyTyper      sj     


$
$4  	^^K 

$
$	H  	CZ

$
$7  
*    c                     t        | t        j                        s.t        j                  dj                  | t        |                   | S )Nz?Environment variable values must be strings. Found {} (type {}))
isinstancesix	text_typer
   r   formattypevalues    r   EnvVarValueTyper   5   s=    	E3==	)

$
$I	tE{	#  
,r   c                 H    t        j                  | ddt        t               y)zfAdd flags for setting and removing environment variables.

  Args:
    parser: The argument parser.
  zenv-varszenvironment variables	long_namekey_type
value_typeN)r   AddUpdateMapFlagsr   r   parsers    r   AddUpdateEnvVarsFlagsr#   >   s!     ' r   c                 h    | dv r$t        j                  dj                  |             t        |       S )aG  Validator for build environment variable keys.

  All existing validations for environment variables are also applicable for
  build environment variables.

  Args:
    key: The build environment variable key.

  Returns:
    The build environment variable key type.
  Raises:
    ArgumentTypeError: If the key is not valid.
  )GOOGLE_ENTRYPOINTGOOGLE_FUNCTION_TARGETGOOGLE_RUNTIMEGOOGLE_RUNTIME_VERSIONzF{} is reserved for internal use by GCF deployments and cannot be used.)r
   r   r   r   r   s    r   BuildEnvVarKeyTyper)   M   s?     	   
$
$P	  
s	r   c                     | S )N r   s    r   BuildEnvVarValueTyper,   h   s    	,r   c                 H    t        j                  | ddt        t               y)z`Add flags for managing build environment variables.

  Args:
    parser: The argument parser.
  zbuild-env-varszbuild environment variablesr   N)r   r    r)   r,   r!   s    r   AddBuildEnvVarsFlagsr.   l   s!     -!%r   )__doc__
__future__r   r   r   r
   $googlecloudsdk.command_lib.util.argsr   r   r   r   r#   r)   r,   r.   r+   r   r   <module>r2      s:    > &  '  9 
66r   