
                            d Z ddlmZ ddlmZ ddl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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dlmZ d Zd Zd Zd Zedk(  rj	  ej4                  dd      Z ej8                  de       ddiZ ej<                         Z ej@                  ee        ejB                  d        e        yy# e"$ rZ# ejH                  e#d       Y dZ#[#ydZ#[#ww xY w)z*A convenience wrapper for starting gsutil.    )absolute_import)unicode_literalsN)
exceptions)config)context_aware)log)metrics)
properties)gce)encoding)filesc                 r    |y | j                  d       | j                  dj                  |||             y )Nz-oz{section}:{name}={value})sectionnamevalue)appendformat)argsr   r   r   s       bin/bootstrapping/gsutil.py_MaybeAddBotoOptionr      s<    
]
++d++(//D 0 / 0    c                 2   t        | d      r| j                  S 	 t        j                  | j                        }t        j                  |      }d|v r|d   S y# t        j                  $ r+}t        j                  d| j                  |       Y d}~yd}~ww xY w)z:Returns the cert provider command from the context config.cert_provider_commandz-context aware settings discovery file %s - %sN)
hasattrr   r   ReadFileContentsconfig_pathjsonloadsErrorr   debug)context_configcontentsjson_outes       r   _GetCertProviderCommandr%   #   s     ^45///-%%n&@&@AHzz(#H(*-.. +	 -II=((!- --s   <A B+!BBc                 8   t        j                         }|r(|j                  t         j                  j                  k(  ry|xr t        |dd      }t        | dd|       |r;t        |      }t        |t              rdj                  |      }t        | dd|       yy)z*Adds device certificate settings for mTLS.Nuse_client_certificateTCredentials r   )r   Configconfig_type
ConfigTypeENTERPRISE_CERTIFICATEgetattrr   r%   
isinstancelistjoin)r   r!   r'   r   s       r   _AddContextAwareOptionsr2   3   s     ''). 

$
$		!	!	8	89   >n6=  dM+C,.3NC'.!hh'<=m-D-/ r   c                  N   g } t        j                         \  }}t        j                  j                  j
                  j                         xr3 t        j                  j                  j                  j                          }t        | dd|       |rt        j                  t        j                  dd       |t        j                         j!                         v r5t        | ddd       t        j                  t        j                  dd       n^t#        j$                         j'                  |      }t        j(                  t        j                  d	d
      }t        j(                  t        j                  dd
      }|r"t        j*                  j-                  ||g      }n|r"t        j*                  j-                  ||g      }n_dt        j.                  j1                  t        j.                  j-                  dd            |g}t        j*                  j-                  |      }t        j                  t        j                  d	d       t        j                  t        j                  d|       t        j                  t        j                  dt3        j4                                t        j                  j6                  }|j8                  j;                         }	|	rt        | dd|	       t        | dd|j<                  j;                                t        | dd|j>                  j                                t        | dd|j@                  j;                                t        | dd|jB                  j;                                t        j                  j                  jD                  j                         }
t        | dd|
dn|
        t        | ddt        j                  j                  jF                  j;                                tI        |        t        jJ                  ddg|   y)zLaunches gsutil.GSUtildefault_project_id(CLOUDSDK_CORE_PASS_CREDENTIALS_TO_GSUTIL1GoogleComputeservice_accountdefault-CLOUDSDK_PASSED_GCE_SERVICE_ACCOUNT_TO_GSUTILBOTO_CONFIG 	BOTO_PATHz/etc/boto.cfg~z.botoNGA_CIDBotoproxy
proxy_port
proxy_rdns
proxy_user
proxy_passhttps_validate_certificatesca_certificates_fileplatform/gsutilgsutil)&bootstrappingGetActiveProjectAndAccountr
   VALUEScorepass_credentials_to_gsutilGetBoolauthdisable_credentialsr   r   SetEncodedValueosenvironc_gceMetadataAccountsr   PathsLegacyCredentialsGSUtilPathGetEncodedValuepathsepr1   path
expanduserr	   GetCIDIfMetricsEnabledrB   addressGetportrdnsusernamepassworddisable_ssl_validationcustom_ca_certs_filer2   ExecutePythonTool)r   projectaccountpass_credentialslegacy_config_pathboto_config	boto_path
path_partsproxy_paramsproxy_addressdisable_ssls              r   mainrs   N   s+    
$"==?'777??A ?



 
 
4
4
<
<
>>  dH&:GD 


>E %.."++-- $1BIN 
**EsL "<<>EEgN
 ,,RZZKk**2::{BGi	JJOO[2D$EF	JJOOY0B$CD	%gg((c7)CD(*
 JJOOJ/	rzz=$?rzz;	B jj(G::<> ""((,&&**,-fg}=flL4E4E4I4I4KLflL4E4E4M4M4OPflL4I4I4M4M4OPflL4I4I4M4M4OP !!&&==EEG+dF$A)1d;HdF$: '',,AAEEGI $ !!"3XEEr   __main__rI   VERSIONrJ   )versionupdatez(To update, run: gcloud components update)%__doc__
__future__r   r   r   rT   rK   googlecloudsdk.callioper   googlecloudsdk.corer   r   r   r	   r
   googlecloudsdk.core.credentialsr   rV   googlecloudsdk.core.utilr   r   r   r%   r2   rs   __name__r   rv   CommandStartblocked_commandsGetDecodedArgvargvWarnAndExitOnBlockedCommandCheckUpdates	Exceptionr$   HandleError r   r   <module>r      s    1 & '  	  . & - # ' * 8 - *0- /6KF\ z(,m,,->	JGMx9 	< (='')D-M--d4DE
 Mx(F! " 
 (J1h''(s   #A(C C/C**C/