
    O                        S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSK
Jr  \R                  " S	5      r\R                  " S
5      rS rS rS rS rS rS\\\4   S\4S jrS rS rS rS rS rS rS rS rS rS rg)z7Utilities for the parsing input for cloud build v2 API.    )absolute_import)division)unicode_literalsN)MutableMapping)cloudbuild_exceptions)yamlzK^projects/[^/]+/locations/[^/]+/connections/[^/]+/gitRepositoryLinks/[^/]+$z^projects/[^/]+/topics/[^/]+$c                     UR                  S5      Gt p#U H  nX@;  a    g U R                  U5      n M     X0;   a  X   R                  5       X'   g g )N.)splitgetupper)
input_dict
dotted_keykeylastbits        6lib/googlecloudsdk/api_lib/cloudbuild/v2/input_util.pySetDictDottedKeyUpperCaser      sV    $*3c
$J  
!'--/J     c                     [         R                  " U SSS9n[         R                  " U5      (       d  [        R                  " U S5      eU$ ! [         R                   a%  n[        R                  " XR
                  5      eS nAff = f)NT)
round_trippreserve_quotesz Could not parse as a dictionary.)r   	load_pathErrorr   ParserErrorinner_error	dict_like)pathdataes      r   LoadYamlFromPathr!   )   sw    A>>$4FD 
		

+
+D,NP P	+ 
 A

+
+D--
@@As   A B  B  Bc                 h    [         R                  " SSU S9R                  5       R                  S5      $ )Nz([A-Z]+)z_\1)patternreplstring_)resublowerlstripr   s    r   CamelToSnaker,   4   s*    	t
55:UWVVC[Ir   c                     U R                  5       nU(       a2  [        R                  " SR                  SR	                  U5      S95      eg )Nz Unrecognized fields in yaml: {f}z, )f)all_unrecognized_fieldsr   InvalidYamlErrorformatjoin)messageunrecognized_fieldss     r   UnrecognizedFieldsr5   9   sL    779

0
0*11ii+, 	2 	./ / r   c           	         U R                  S5      U S'   U R                  SU R                  SS5      5      nU(       d  [        R                  " S5      e[        R                  " [
        U5      (       a  SU0U S'   O[        R                  " [        U5      (       a  SU0U S'   OuUR                  S	5      (       a  S
U0U S'   OWUS:X  a.  U R                  SS5      (       d  [        R                  " S5      eO#[        R                  " SR                  US95      eSSSSS.nSU ;   ak  U R                  S5      nUR                  U5      nUb  X@S'   OA[        R                  " SR                  USR                  UR                  5       5      S95      eU R                  S0 5      R                  5        H	  u  pVX`U'   M     SU ;   a#  SU S   ;   a  U S   R                  S5      U S   S'   [        U R                  S/ 5      5        g)a  Transform workflow trigger according to the proto.

Refer to:
  * go/gcb-v2-filters
  * go/re-scope-workflow-resources-to-triggers-only
to understand more details.

Args:
  trigger: the trigger defined in the workflow YAML.
Raises:
  InvalidYamlError: The eventType was unsupported.
nameidsourceeventSource zEmpty event sourcetopicgitRepoLinkzhttps://urlwebhookwebhookValidationSecretz2Webhook trigger requires a webhookValidationSecretz'Unsupported event source: {eventsource})eventsourcePUSH_BRANCHPUSH_TAGPULL_REQUESTALL)zbranch-pushztag-pushzpull-requestany	eventTypeNz>Unsupported event type: {event_type}. Supported: {event_types},)
event_typeevent_typesfiltersgitRefregex	nameRegexparams)popr   r0   r'   match_PUB_SUB_TOPIC_PAT_DC_GIT_REPO_LINK_PAT
startswithr   r1   r2   keysitemsParamDictTransform)triggerrA   event_type_mappingrI   mapped_event_typer   values          r   WorkflowTriggerTransformr\   A   s	    ++f%'$-Hgkk-&DE+	

0
01E
FFXX +.. +.GH	xx%{33&4GHj)),GHi;;0"55!22
>@ @ 6  
0
0188# 	9 	
  #$	 G[)J*..z:$.k!22&'-v$88$6$;$;$=> (. (@A A
 KK	2.446jcCL 7W(99%,X%6%:%:7%CGHk"W[[2./r   	input_mapr   c                 8    X;   a  X   R                  5       X'   g g )N)r   )r]   r   s     r   _ConvertToUpperCaser_   {   s    ^))+IN r   c                 J    SU ;   a  [        U S   5      U S'   [        U S5        g )Ndefaulttype)ParamValueTransformr_   )
param_specs    r   ParamSpecTransformre      s(    */
90EFJyj&)r   c                 4    SU ;   a  [        U S   5      U S'   g g Nr[   )ResultValueTransform)pipeline_results    r   PipelineResultTransformrj      s#    3OG4LMOG  r   c                     SU ;   a  [        U S   5        [        U R                  S/ 5      5        SU ;   a  [        U 5        g g )NrefrO   onError)RefTransformrW   r   OnErrorTransform)	task_steps    r   TaskStepTransformrq      s?    
i5!"Y]]8R01)Y r   c                     U S   S;  a&  [         R                  " SR                  U S   S95      e[        U S   5      R	                  5       U S'   g )Nrm   )continuestopAndFailzDUnsupported onError value: {value}. Supported: continue, stopAndFail)r[   )r   r0   r1   r,   r   r+   s    r   ro   ro      sR    	)_77

0
0N	d9o	& 
 #4	?399;DOr   c                     [        U S5        U R                  S/ 5       H  n[        U S   U   5        M     SU ;   a  [        U S   5      U S'   g g )Nrb   
propertiesr[   )r_   r   PropertySpecTransformrc   )task_resultproperty_names     r   TaskResultTransformrz      sV    k6*"|R8m+l3MBC 9 .{7/CDK r   c                     [        U S5        g)zuMutates the given property spec from Tekton to GCB format.

Args:
  property_spec: A Tekton-compliant property spec.
rb   N)r_   )property_specs    r   rw   rw      s     mV,r   c                 8    U  H  n[        US   5      US'   M     g rg   )rc   )rO   params     r   rW   rW      s    e(w8E'N r   c                 (   [        U [        5      (       d*  [        U [        5      (       d  [        U [        5      (       a  S[        U 5      S.$ [        U [        5      (       a  SU S.$ [
        R                  " SR                  [        U 5      S95      e)NSTRINGrb   	stringValARRAYrb   arrayVal(Unsupported param value type. {msg_type}msg_type)	
isinstancestrfloatintlistr   r0   r1   rb   )param_values    r   rc   rc      s    c""	K	'	'	K	%	%3{+;<<+t$$55

0
0299+& 	: 	() )r   c                 \   [        U [        5      (       d*  [        U [        5      (       d  [        U [        5      (       a  S[        U 5      S.$ [        U [        5      (       a  SU S.$ [        U [
        5      (       a  SU S.$ [        R                  " SR                  [        U 5      S95      e)	zITransforms the string result value from Tekton to GCB resultValue struct.r   r   r   r   OBJECT)rb   	objectValr   r   )
r   r   r   r   r   objectr   r0   r1   rb   )result_values    r   rh   rh      s     s##	L%	(	(	L#	&	&3|+<==,%%66,''<88

0
0299,' 	: 	
 r   c                     SU ;   a"  U R                  S5      R                  5       U S'   [        U R                  S/ 5      5        g )NresolverrO   )rP   r   rW   r   )rl   s    r   rn   rn      s8    3ggj)//1C
OSWWXr*+r   ) __doc__
__future__r   r   r   r'   typingr   !googlecloudsdk.api_lib.cloudbuildr   googlecloudsdk.corer   compilerS   rR   r   r!   r,   r5   r\   r   r_   re   rj   rq   ro   rz   rw   rW   rc   rh   rn    r   r   <module>r      s    > &  ' 	 ! C $

 $F G ZZ ?@ 0I
/70t,>#s(#; ,# ,
*N
 <E-9
)(,r   