
    %                     
   S r SSKJr  SSKJr  SSKJr  SSKJr  SSKr " S S\	5      r
 " S	 S
\	5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\R"                  5      rS rg)z-Flags for serverless local development setup.    )arg_parsers)base)map_util)
exceptionsNc                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
FlagDef   z<Object that holds a flag definition and adds it to a parser.c                     Xl         X l        g N)namekwargsselfr   r   s      ,lib/googlecloudsdk/command_lib/code/flags.py__init__FlagDef.__init__   s    IK    c                 4    U R                   UR                   :H  $ r   r   r   others     r   __eq__FlagDef.__eq__       99

""r   c                 4    U R                   UR                   :g  $ r   r   r   s     r   __ne__FlagDef.__ne__"   r   r   c                 ,    [        U R                  5      $ r   )hashr   r   s    r   __hash__FlagDef.__hash__%   s    		?r   c                 R    UR                   " U R                  40 U R                  D6  g r   )add_argumentr   r   )r   parsers     r   ConfigureParserFlagDef.ConfigureParser(   s    
		1T[[1r   )r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r!   r&   __static_attributes__ r   r   r   r      s    D##2r   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	FlagDefs,   z Base type for all flag builders.c                 "    [        5       U l        g r   )set_operationsr    s    r   r   FlagDefs.__init__/   s    uDr   c                 :    U R                  [        U40 UD65        g r   )_AddOperationr   r   s      r   _AddFlagFlagDefs._AddFlag2   s    wt.v./r   c                 :    U R                   R                  U5        g r   )r4   add)r   	operations     r   r7   FlagDefs._AddOperation5   s    #r   c                 L    U R                    H  nUR                  U5        M     g r   )r4   r&   )r   r%   r<   s      r   r&   FlagDefs.ConfigureParser8   s     %%	' &r   )r4   N)
r(   r)   r*   r+   r,   r   r8   r7   r&   r-   r.   r   r   r0   r0   ,   s    (0$(r   r0   c                       \ rS rSrSrS rSrg)MutuallyExclusiveGroupDef=   zEFlag builder where all flags are added to a mutually exclusive group.c                 j    UR                  SS9nU R                   H  nUR                  U5        M     g )NF)required)add_mutually_exclusive_groupr4   r&   )r   r%   groupops       r   r&   )MutuallyExclusiveGroupDef.ConfigureParser@   s3    ///?E r   r.   N)r(   r)   r*   r+   r,   r&   r-   r.   r   r   rA   rA   =   s
    M r   rA   c                   $    \ rS rSrSrS rS rSrg)BuilderFlagsF   zFlags for builder settings.c                 &    U R                  SSSS9  g )Nz--dockerfile
Dockerfilez!Dockerfile for the service image.)defaulthelpr8   r    s    r   AddDockerfileBuilderFlags.AddDockerfileI   s    MM0  2r   c                 $    U R                  SSS9  g )Nz	--builderzGBuild with a given Cloud Native Computing Foundation Buildpack builder.rO   rP   r    s    r   
AddBuilderBuilderFlags.AddBuilderO   s    MM  r   r.   N)r(   r)   r*   r+   r,   rQ   rU   r-   r.   r   r   rJ   rJ   F   s    #2r   rJ   c                        \ rS rSrS rS rSrg)CredentialFlagsV   c                 $    U R                  SSS9  g )Nz--service-accountzMWhen connecting to Google Cloud Platform services, use a service account key.rT   rP   r    s    r   AddServiceAccount!CredentialFlags.AddServiceAccountX   s    MM  r   c                 (    U R                  SSSSS9  g )Nz --application-default-credential
store_trueFzZWhen connecting to Google Cloud Platform services, use the application default credential.)actionrN   rO   rP   r    s    r   AddApplicationDefaultCredential/CredentialFlags.AddApplicationDefaultCredential^   s!    MM**	  +r   r.   N)r(   r)   r*   r+   r[   r`   r-   r.   r   r   rX   rX   V   s    +r   rX   c                   $    \ rS rSrSrS rS rSrg)EnvVarFlagsg   zEnvironment variable flags.c           
          U R                  SS[        R                  [        R                  " [        R
                  [        R
                  S9SS9  g )Nz
--env-vars	KEY=VALUEkey_type
value_typez8List of key-value pairs to set as environment variables.metavarr_   typerO   r8   r   UpdateActionArgDictsix	text_typer    s    r   
AddEnvVarsEnvVarFlags.AddEnvVarsj   sA    MM''  ]]s}}>G  Ir   c           	          U R                  SS[        R                  " [        R                  [        R                  S9SS9  g )Nz--env-vars-file	FILE_PATHrg   zIPath to a local YAML file with definitions for all environment variables.)rk   rl   rO   )r8   r   ArgDictFilerp   rq   r    s    r   AddEnvVarsFileEnvVarFlags.AddEnvVarsFiles   s9    MM!!]]s}}>  r   r.   N)r(   r)   r*   r+   r,   rr   rw   r-   r.   r   r   rc   rc   g   s    #Ir   rc   c                      ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSS jrS rS rS rS rS rS rS rS rS rS rSrU =r$ )CommonFlags}   z;Flags that are common between the gcloud code dev commands.c                 8   > [         [        U ]  5         0 U l        g r   )superrz   r   _group_cache)r   	__class__s    r   r   CommonFlags.__init__   s    	+t%'Dr   c                 .    U R                  S[        SS9  g )Nz--local-portzoLocal port to which the service connection is forwarded. If this flag is not set, then a random port is chosen.rl   rO   )r8   intr    s    r   AddLocalPortCommonFlags.AddLocalPort   s    MM9  :r   c                 $    U R                  SSS9  g )Nz--sourcez^The directory containing the source to build. If not specified, the current directory is used.rT   rP   r    s    r   	AddSourceCommonFlags.AddSource   s    MM;  <r   c                 &    U R                  SSSS9  g )Nz--service-nameFzName of the service.rD   rO   rP   r    s    r   AddServiceNameCommonFlags.AddServiceName   s    MM"U9OMPr   c                 &    U R                  SSSS9  g )Nz--imageFzName for the built image.r   rP   r    s    r   AddImageCommonFlags.AddImage   s    MM)e2MMNr   c                 J    U R                  S[        R                  " SS9SS9  g )Nz--memoryB)default_unitzContainer memory limit. Limit is expressed either as an integer representing the number of bytes or an integer followed by a unit suffix. Valid unit suffixes are "B", "KB", "MB", "GB", "TB", "KiB", "MiB", "GiB", "TiB", or "PiB".r   )r8   r   
BinarySizer    s    r   	AddMemoryCommonFlags.AddMemory   s)    MM##5)  *r   c                 J    U R                  S[        R                  " SS9SS9  g )Nz--cpug        )lower_boundzjContainer CPU limit. Limit is expressed as a number of CPUs. Fractional CPU limits are allowed (e.g. 1.5).r   )r8   r   BoundedFloatr    s    r   AddCpuCommonFlags.AddCpu   s)    MM%%#68  9r   c                 N    U R                  S[        R                  " 5       SSS9  g )Nz--cloudsql-instancesCLOUDSQL_INSTANCEzYCloud SQL instance connection strings. Must be in the form <project>:<region>:<instance>.)rl   rk   rO   )r8   r   ArgListr    s    r   AddCloudsqlInstances CommonFlags.AddCloudsqlInstances   s*    MM  "#)	  *r   c                 *    U R                  SSSSSS9  g )Nz--readiness-probeFr^   TzAdd a readiness probe to the list of containers that delays deployment stabilization until the application app has bound to $PORTrN   r_   hiddenrO   rP   r    s    r   AddReadinessProbeCommonFlags.AddReadinessProbe   s(     	MMP  Qr   c                 D    SnU(       a  US-  nU R                  SSSUS9  g)z_AddFlag for service_config, which has two possible help strings.

Args:
  include_app_engine_docs: Add paragraph that says app.yaml is allowed.
zservice.yaml filename override. Defaults to the first file matching ```*service.dev.yaml``` then ```*service.yaml```, if any exist. This path is relative to the --source dir.a  
An App Engine config path (typically ```app.yaml```) may also be provided here, and we will build with a Cloud Native Computing Foundation Buildpack builder selected from gcr.io/gae-runtimes/buildpacks, according to the App Engine ```runtime``` specified in app.yaml.service_configSERVICE_CONFIG?)rk   nargsrO   NrP   )r   include_app_engine_docs	help_texts      r   AddServiceConfigPositionalArg)CommonFlags.AddServiceConfigPositionalArg   s?    	<  12i 	MM 	  r   c                 B    U R                  S[        R                  SS9  g )Nz--allow-secret-managerzBSuppress warnings if secrets need to be pulled from secret manager)r_   rO   )r8   r   StoreTrueFalseActionr    s    r   AddAllowSecretManagerFlag%CommonFlags.AddAllowSecretManagerFlag   s$    MM //  r   c           
          U R                  SS[        R                  [        R                  " [        R
                  [        R
                  S9SS9  g )Nz	--secretsrf   rg   z*List of key-value pairs to set as secrets.rj   rm   r    s    r   
AddSecretsCommonFlags.AddSecrets   s@    MM''  ]]s}}>9  ;r   c                 L    U R                  SSSSSS9  U R                  SSSS	9  g )
Nz--cloudFr^   Tzdeploy code to Cloud Runr   z--regionz region to deploy the dev service)rO   r   rP   r    s    r   AddCloudCommonFlags.AddCloud   s>    MM'  ) 	MM;D  Jr   c                     XR                   ;  a&  U" 5       nX R                   U'   U R                  U5        U R                   U   $ r   )r~   r7   )r   klassrF   s      r   	_GetGroupCommonFlags._GetGroup   sB    %%%ge!&
U##r   c                 ,    U R                  [        5      $ r   )r   rX   r    s    r   CredentialsGroupCommonFlags.CredentialsGroup   s    >>/**r   c                 ,    U R                  [        5      $ r   )r   rc   r    s    r   EnvVarsGroupCommonFlags.EnvVarsGroup   s    >>+&&r   c                 ,    U R                  [        5      $ r   )r   rJ   r    s    r   BuildersGroupCommonFlags.BuildersGroup   s    >>,''r   c                     U R                  5         U[        R                  R                  :X  a  U R	                  5         U[        R                  R                  :H  nU R                  US9  g )N)r   )_AddBetaFlagsr   ReleaseTrackALPHA_AddAlphaFlagsr   )r   release_trackappyaml_supports      r   AddAlphaAndBetaFlags CommonFlags.AddAlphaAndBetaFlags   sW    ))///
 $t'8'8'>'>>O&&&Or   c                    U R                  5       R                  5         U R                  5         U R                  5         U R	                  5       R                  5         U R	                  5       R                  5         U R                  5         U R                  5         U R                  5         U R                  5       R                  5         g)z0Set up flags that are for alpha and beta tracks.N)r   rQ   r   r   r   r[   r`   r   r   r   rU   r    s    r   r   CommonFlags._AddBetaFlags
  s    &&(NN--/;;=""$OO##%r   c                 <   U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5       R                  5         U R                  5       R                  5         U R                  5         g)z+Set up flags that are for alpha track only.N)	r   r   r   r   r   r   rr   rw   r   r    s    r   r   CommonFlags._AddAlphaFlags  sk     	MMONNKKM""$&&(MMOr   )r~   )F)r(   r)   r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   __classcell__)r   s   @r   rz   rz   }   st    C:<QO*9*
Q4;J$+'(P
&
 
r   rz   c                       \ rS rSrSrSrg)InvalidFlagErrori#  zFlag settings are illegal.r.   N)r(   r)   r*   r+   r,   r-   r.   r   r   r   r   #  s    "r   r   c                     SU ;   aP  U R                  S5      (       a9  U R                  S5      (       d"  U R                  S5      (       d  [        S5      egggg)z>Validate flag requirements that cannot be handled by argparse.cloudsql_instancesservice_accountapplication_default_credentialzd--cloudsql-instances requires --service-account or --application-default-credential to be specified.N)IsSpecifiedr   )	namespaces    r   Validater   '  sj    i'011  !233  !ABB
 O P P C 4 2 (r   )r,   googlecloudsdk.callioper   r   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   rp   objectr   r0   rA   rJ   rX   rc   rz   Errorr   r   r.   r   r   <module>r      s    4 / ( 9 * 
2f 2((v ("   ,  +/ +"+ ,c( cL#z'' #Pr   