
                             d 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 G d dej                        Zy)>Update a local package with changes from a remote source repo.    )absolute_import)division)unicode_literals)base)anthoscli_backend)flags)logzThe local package directory to update. Can optionally include a git reference  (GIT_REF) to a tag, branch or commit hash to update to. Defaults to last fetched git-ref.zLOCAL_DIR[@GIT_REF]c                   .    e Zd ZdZddiZed        Zd Zy)Updater   EXAMPLESa  
      To update local package `~/my-package-dir`:

        $ {command} ~/my-package-dir

      To update my-package-dir/ to match the v1.3 tag at git URL
      https://github.com/my-other-account/foo.git:

        $ {command} my-package-dir@v1.3 --repo-uri https://github.com/my-other-account/foo.git

      To update by applying a git patch:

        $ git add my-package-dir/
        $ git commit -m "package updates"
        $ {command} my-package-dir/@main --strategy alpha-git-patch
      c                 <   t        j                  t        t              j	                  |        t        j
                  dddd      j	                  |        t        j                         j	                  |        t        j                         j	                  |        y )N)help_overridemetavarFREPO_URIzUgit repo url for updating contents. Defaults to the url the package was fetched from.)
positionalrequiredr   r   )r	   GetLocalDirFlag_LOCAL_DIR_HELP_LOCAL_DIR_METAAddToParserGetRepoURIFlagGetStrategyFlagGetDryRunFlag)parsers    %lib/surface/anthos/packages/update.pyArgszUpdate.Args6   ss    	"133>;v3F	EE:(78 9DF8K	''/	%%f-    c                    |j                   dk(  }t        j                         }t        j                  j                  dj                  |j                               |j                  j                  d      \  }}}|r|j                  d|g      nd} |d||j                  |j                  |j                  ||j                  t        j                         |	      }| j                  |      S )NdebugzSyncing dir [{}]@.update)	command	local_dirrepo_uristrategydry_runverboseshow_exec_errorenvexecution_dir)	verbosityr   AnthosCliWrapperr
   statusPrintformat	LOCAL_DIR	partitionjoinr   r'   r(   r*   GetEnvArgsForCommand _DefaultOperationResponseHandler)	selfargs
is_verbosecommand_executorwork_dir	at_symbolgit_refpkg_dirresponses	            r   Runz
Update.RunA   s    7*J(99;JJ'..t~~>?#'>>#;#;C#@ Hi07innc7^,SG*1)-)-(,(2040D0D$5$J$J$L.68H 00::r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   r@    r   r   r   r   !   s-    F 
-& . .;r   r   N)rD   
__future__r   r   r   googlecloudsdk.callioper   !googlecloudsdk.command_lib.anthosr   r	   googlecloudsdk.corer
   r   r   BinaryBackedCommandr   rG   r   r   <module>rM      s@    E &  ' ( ? 3 #7 (0;T%% 0;r   