
                             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d	lmZ dd
lmZ ddlmZ ddlmZ  G d de
j&                        Zy)zUpdate manual trigger command.    )absolute_import)division)unicode_literals)cloudbuild_util)trigger_config)base)resource_args)concept_parsers)log)
properties)	resourcesc                   4    e Zd ZdZddiZed        Zd Zd Zy)UpdateManualz-Updates a manual trigger used by Cloud Build.EXAMPLESz            To update the branch from which the trigger clones:

              $ {command} my-trigger --source-to-build-branch=my-branch
          c                    t         j                  j                  dt        j                         dd      j                  |        t        j                  | dd      }t        j                  |dd       t        j                  |       y)	zRegisters flags for this command.

    Args:
      parser: An argparse.ArgumentParser-like object. It is mocked out in order
        to capture some information, but behaves like an ArgumentParser.
    TRIGGERzBuild Trigger.TrequiredF)add_region_flagadd_name)has_file_sourcerequire_docker_imageN)
r
   ConceptParserForResourcer	   GetTriggerResourceSpecAddToParsertrigger_utilsAddTriggerArgsAddBuildConfigArgsForUpdateAddRepoSourceForUpdate)parserflag_configs     ,lib/surface/builds/triggers/update/manual.pyArgszUpdateManual.Args+   s|     !!--,,.	 . 
 k&..K --T ((5    c           
      0   t        j                         }t        j                  ||      \  }}|r|S t        j
                  j                  j                  j                  d      }d|d|j                  d}t        j                  ||||||dd       |S )zParses arguments into a build trigger.

    Args:
      args: An argparse arguments object.
      old_trigger: The existing trigger to be updated.
      update_mask: The fields to be updated.

    Returns:
      A build trigger object.
    Tr   zgcr.io/z/gcb-z:$COMMIT_SHA)has_repo_sourcer   )r   GetMessagesModuler   ParseTriggerArgsForUpdater   VALUEScoreprojectGetr   ParseBuildConfigArgsForUpdate)	selfargsold_triggerupdate_maskmessagestriggerdoner,   default_images	            r#   ParseTriggerFromFlagsz"UpdateManual.ParseTriggerFromFlagsB   s     002H!;;D(KMGTn$$,,00$0?G6=t||LM// Nr%   c                    t        j                         }t        j                         }t        j                  j
                  j                  j                  d      }t        j                  j                  j                  j                         }|j                  xs |xs t         j                  }|j                  }t        j                  j                  ||||dd      j                         }|j                   j                  |j"                  j%                  ||            }	g }
| j'                  ||	|
      }d|
j)                  t        j*                  |             t-        t/        t1        fd|
                  }
|j3                  |||d	j5                  |
      
      }|j                   j7                  |      }t9        j:                  |d       |S )zThis is what gets called when the user runs this command.

    Args:
      args: An argparse namespace. All the arguments that were provided to this
        command invocation.

    Returns:
      The updated manual trigger.
    Tr   )
projectsIdlocationsId
triggersIdz&cloudbuild.projects.locations.triggers)params
collection)name	triggerIdsubstitutionsc                 .    | j                        rS | S )N)
startswith)msubs    r#   <lambda>z"UpdateManual.Run.<locals>.<lambda>   s    c!2#99r%   ,)resourceNamer?   buildTrigger
updateMaskbuild_trigger)kind)r   GetClientInstancer(   r   r*   r+   r,   r-   buildsregionDEFAULT_REGIONr   r   REGISTRYParseRelativeNameprojects_locations_triggersMESSAGES_MODULE-CloudbuildProjectsLocationsTriggersGetRequestr7   extendMessageToFieldPathssortedsetmap/CloudbuildProjectsLocationsTriggersPatchRequestjoinPatchr   UpdatedResource)r/   r0   clientr3   r,   
regionproplocation	triggeridr>   r1   r2   r4   requpdated_triggerrD   s                 @r#   RunzUpdateManual.Runa   s    ..0F002H$$,,00$0?G""))00446J{{JjJO,J,JHI##!##

 < $  ln 	 4488LL 	M 	
K K(({KHG C::7CDC9;GHK 
B
B88K(	 C C 88>>sCO	8r%   N)	__name__
__module____qualname____doc__detailed_helpstaticmethodr$   r7   re    r%   r#   r   r      s4    5 - 6 6,>6r%   r   N)ri   
__future__r   r   r   !googlecloudsdk.api_lib.cloudbuildr   r   r   googlecloudsdk.callioper   %googlecloudsdk.command_lib.cloudbuildr	   (googlecloudsdk.command_lib.util.conceptsr
   googlecloudsdk.corer   r   r   UpdateCommandr   rl   r%   r#   <module>rt      s?    % &  ' = M ( ? D # * )x4%% xr%   