
    O                        d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlm	Z	 ddl
mZ  ej                  d	      Z ej                  d
      Zd Zd Zd Zd Zd Zdeeef   defdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)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                     |j                  d      ^ }}|D ]  }|| vr y | j                  |      }  || v r| |   j                         | |<   y y )N.)splitgetupper)
input_dict
dotted_keykeylastbits        6lib/googlecloudsdk/api_lib/cloudbuild/v2/input_util.pySetDictDottedKeyUpperCaser      s`    $*3c
*$J  
Z!$'--/Jt     c                    	 t        j                  | dd      }t        j                  |      st        j                  | d      |S # t         j                  $ r%}t        j                  | |j
                        d }~ww xY w)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!   )   sv    A>>$4FD 
	

+
+D,NP P	+ 
 A

+
+D!--
@@As   A A? A::A?c                 l    t        j                  dd|       j                         j                  d      S )Nz([A-Z]+)z_\1)patternreplstring_)resublowerlstripr   s    r   CamelToSnaker,   4   s*    	t
55:UWVVC[Ir   c                     | j                         }|r4t        j                  dj                  dj	                  |                  y )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           	         | j                  d      | d<   | j                  d| j                  dd            }|st        j                  d      t        j                  t
        |      rd|i| d<   nt        j                  t        |      rd|i| d<   nj|j                  d	      rd
|i| d<   nQ|dk(  r'| j                  dd      s:t        j                  d      t        j                  dj                  |            ddddd}d| v rm| j                  d      }|j                  |      }||| d<   nCt        j                  dj                  |dj                  |j                                           | j                  di       j                         D ]
  \  }}|| |<    d| v r!d| d   v r| d   j                  d      | d   d<   t        | j                  dg              y)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&4GHj),GHi;;0"5!22
>@ @  
0
0188# 	9 	
  #$	 G[)J*..z:$.gk!22&'-v$88$6$;$;$=> (. (@A A
 KK	2.446jc5GCL 7W(99%,X%6%:%:7%CGHk"W[[2./r   	input_mapr   c                 :    || v r| |   j                         | |<   y y )N)r   )r]   r   s     r   _ConvertToUpperCaser_   {   s%    Is^))+IcN r   c                 F    d| v rt        | d         | d<   t        | d       y )Ndefaulttype)ParamValueTransformr_   )
param_specs    r   ParamSpecTransformre      s(    */
90EFJyj&)r   c                 0    d| v rt        | d         | d<   y y Nr[   )ResultValueTransform)pipeline_results    r   PipelineResultTransformrj      s#    3OG4LMOG  r   c                 ~    d| v rt        | d          t        | j                  dg              d| v rt        |        y y )NrefrO   onError)RefTransformrW   r   OnErrorTransform)	task_steps    r   TaskStepTransformrq      s?    
i5!"Y]]8R01)Y r   c                     | d   dvr(t        j                  dj                  | d               t        | d         j	                         | d<   y )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                     t        | d       | j                  dg       D ]  }t        | d   |           d| v rt        | d         | d<   y y )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                     t        | d       y)z{Mutates 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                 4    | D ]  }t        |d         |d<    y rg   )rc   )rO   params     r   rW   rW      s    e(w8E'N r   c                    t        | t              s t        | t              st        | t              rdt        |       dS t        | t              rd| dS t        j                  dj                  t        |                   )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      ss    c"	K	'	K	%3{+;<<+t$55

0
0299+& 	: 	() )r   c                 .   t        | t              s t        | t              st        | t              rdt        |       dS t        | t              rd| dS t        | t
              rd| dS t        j                  dj                  t        |                   )	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                     d| v r"| j                  d      j                         | d<   t        | j                  dg              y )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 RZZ ?@ 0I
/70t,>#s(#; ,# ,
*N
 <E-9
)(,r   