
    ]!                        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J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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\\R=                  S5      -   rSr Sr!S\ -   \!-   r"\" \\"5      r#S\RH                  " 5       -   S-   S-   S-   r%\" \\!5      r&\" \\ 5      r' " S S\	5      r(g)z?Implementation of versioning configuration command for buckets.    )absolute_import)print_function)division)unicode_literals)metrics)Command)CommandArgument)ApiSelector)CommandException)NO_URLS_MATCHED_TARGET)CreateHelpText)storage_v1_messages)NO_MAX)GcloudStorageMap)	shim_utilz8
  gsutil versioning set (on|off) gs://<bucket_name>...
z/
  gsutil versioning get gs://<bucket_name>...

z
<B>SET</B>
  The "set" sub-command requires an additional sub-command, either "on" or
  "off", which, respectively, will enable or disable versioning for the
  specified bucket(s).

z
<B>GET</B>
  The "get" sub-command gets the versioning configuration for a
  bucket and displays whether or not it is enabled.
z
  The `Versioning Configuration
  <https://cloud.google.com/storage/docs/object-versioning>`_ feature
  enables you to configure a Google Cloud Storage bucket to keep old
  versions of objects.

  The gsutil versioning command has two sub-commands:
z'--format=value[separator=""](name.sub("z", "gs://").sub("$", ": "),zversioning.enabledz.yesno("Enabled", "Suspended"))c                      \ rS rSrSr\R                  " SSS/\S\SSSS\	R                  \	R                  /\	R                  \" S	S
S/S9\R                  " 5       /\R                  " 5       /S.S9r\R                  " SSS/SS\\\S.S9r\" \" SSSS\/0 SS9\" \" / SQ0 S9\" / SQ0 S9S.0 S9S.0 S9rS rS rS rS  rS!rg")#VersioningCommandN   z,Implementation of gsutil versioning command.
versioningsetversioninggetversioning    Fmodeonoff)choices)setget)command_name_aliasesusage_synopsismin_argsmax_argssupported_sub_argsfile_url_okprovider_url_okurls_start_arggs_api_supportgs_default_apiargparse_argumentscommand_helpz4Enable or suspend versioning for one or more buckets)r    r   )	help_namehelp_name_aliases	help_typehelp_one_line_summary	help_textsubcommand_help_textstoragebucketslistz--rawT)gcloud_commandflag_mapsupports_output_translation)r3   r4   updatez--versioning)r6   r7   )r3   r4   r9   z--no-versioningr   r   c                     U R                   (       d  U R                  5         U R                   S   R                  5       S:X  a  gg)Nr   r   r      )args$RaiseWrongNumberOfArgumentsExceptionlower)selfs    ,platform/gsutil/gslib/commands/versioning.py_CalculateUrlsStartArg(VersioningCommand._CalculateUrlsStartArg   s4    99
//1yy|u$    c           	         U R                   S   R                  5       nUS;  a  [        SU R                  -  5      eU R                   SS nU(       d  U R	                  5         SnU H  nU R                  US/S9nU H  nUR                  nS	n[        R                  " [        R                  R                  5       S
9nUS:X  a.  U R                  R                  SU5        S	UR                  l        O-U R                  R                  SU5        SUR                  l        U R                  R                  UR                   UUR"                  S/S9  M     M     U(       d  [        [$        ['        U5      -  5      eg)z+Gets versioning configuration for a bucket.r   r:   z,Argument to "%s set" must be either <on|off>r<   NFidbucket_fieldsT)r   r   zEnabling versioning for %s...zSuspending versioning for %s...)providerfields)r=   r?   r   command_namer>   GetBucketUrlIterFromArgstorage_urlapitools_messagesBucketVersioningValueloggerinfor   enabled
gsutil_apiPatchBucketbucket_nameschemer   r5   )	r@   versioning_argurl_argssome_matchedurl_strbucket_iterblrurlbucket_metadatas	            rA   _SetVersioning VersioningCommand._SetVersioning   sX   YYq\'')N]*K"//1 2 2yy}H
//1 L000Ok#oo+22(//??ACT!
++

:C
@/3/
$
$
,
++

<c
B/4/
$
$
,##COO$3-0ZZ,06 	$ 	3  " 3d8nDEE rD   c                    U R                   nSnU H  nU R                  US/S9nU H  nSnUR                  R                  (       aN  UR                  R                  R                  (       a)  [        SUR                  R                  S5      -  5        Mn  [        SUR                  R                  S5      -  5        M     M     U(       d  [        [        [        U5      -  5      eg)	z6Gets versioning configuration for one or more buckets.Fr   rG   Tz%s: Enabled/z%s: SuspendedN)r=   rL   root_objectr   rS   print
url_stringrstripr   r   r5   )r@   rY   rZ   r[   r\   r]   s         rA   _GetVersioning VersioningCommand._GetVersioning   s    yyH L00@L~ 1 Ok#??%%#//*D*D*L*L
 5 5c ::
;
#.."7"7"<<
=   3d8nDEE rD   c           	         U R                   R                  S5      nUS:X  a"  U R                  n[        R                  " U/S9  OwUS:X  aE  U R
                  nU R                   S   R                  5       nUS;   a  [        R                  " X/S9  O,[        SU< SU R                  < SU R                  < S	35      eU" 5         g)
z/Command entry point for the versioning command.r   r    )subcommandsr   r:   zInvalid subcommand "z
" for the z command.
See "gsutil help z".)	r=   poprh   r   LogCommandParamsr`   r?   r   rK   )r@   action_subcommandfuncrX   s       rA   
RunCommandVersioningCommand.RunCommand   s    		a(E!  d,=+>?	e	#  dyy|))+n	=	(  *;	=  d//1B1BDE E 	FrD    N)__name__
__module____qualname____firstlineno____doc__r   CreateCommandSpec	_SYNOPSISr   r
   XMLJSONr	   %MakeZeroOrMoreCloudBucketURLsArgumentcommand_specHelpSpec_DETAILED_HELP_TEXT_get_help_text_set_help_text	help_specr   _GCLOUD_FORMAT_STRINGgcloud_storage_maprB   r`   rh   rp   __static_attributes__rr   rD   rA   r   r   N   sO   4 **+_=!oo{'7'78 %% ftUm<CCE "GGIK,* 

 
@#)  ( FG+" .2  +.  (* +.  (*", /$J M'RFBF&rD   r   N))rw   
__future__r   r   r   r   gslibr   gslib.commandr   gslib.command_argumentr	   gslib.cs_api_mapr
   gslib.exceptionr   r   gslib.help_providerr   "gslib.third_party.storage_apitoolsr   rN   gslib.utils.constantsr   gslib.utils.shim_utilr   gslib.utilsr   _SET_SYNOPSIS_GET_SYNOPSISlstripry   _SET_DESCRIPTION_GET_DESCRIPTION_DESCRIPTIONr   get_format_flag_caretr   r   r   r   rr   rD   rA   <module>r      s    F & %  '  ! 2 ( , 2 . W ( 2 ! M0066	    ** %Y= G"88:;679MN ;; 
  /?@/?@` `rD   