
    u                         d Z ddlmZ ddlmZ ddlmZ ddlZddl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 Zd Zd Zd Zd Zy)z/Utility for parsing Artifact Registry versions.    )absolute_import)division)unicode_literalsN)	protojson)filter_rewriter)common_args)containeranalysis_util)requests)util)log)
properties)	resourcesc                    g }| j                   D ]G  }t        j                  j                  |j                  d      }|j                  |j                         I t        j                  t        j                  |             }|j                  dd       |r||d<   | j                  F| j                  j                  D ci c]#  }|j                  |j                  j                   % c}|d<   |S c c}w )z'Convert the tag resources into tag IDs.z>artifactregistry.projects.locations.repositories.packages.tagsrelatedTagsNmetadata)r   r   REGISTRYParseRelativeNamenameappendtagsIdjsonloadsr   encode_messagepopr   additionalPropertieskeyvaluestring_value)responseunused_argstagsttagjson_objprops          8lib/googlecloudsdk/command_lib/artifacts/version_util.pyShortenRelatedTagsr'   #   s    	$a



.
.	PC 	KK

	   ZZ	00:;(
,,}d#	"H]" %%:::D 	$**))):HZ 
/	s   >(C.c                     |j                   s| S t        |       \  }}t        j                  ||      }|j	                         r!| j                  |j	                                | S | j                  ddi       | S )zHCall CA APIs for vulnerabilities if --show-package-vulnerability is set.package_vulnerability_summaryzNo vulnerability data found.)show_package_vulnerability"_GenerateMavenResourceFromResponseca_utilGetMavenArtifactOccurrencesArtifactsDescribeViewupdate)r   argsprojectmaven_resourcer   s        r&   ListOccurrencesr3   9   sy    		(	(O ?xH'>00.I(##%OOH2245 
/	 OO	(*HI 
/    c                    t        | d      r)t        j                  t        j                  |             }n| }d|v rX|d   rS|d   D ]K  }t        |j                  d      t              s#t        j                  |d         j                         |d<   M d|v rD|j                  d      r3d|d   v r,i }|d   j                  dg       D ]  }|d   ||d   <    ||d<   |S )z.Convert fingerprint and annotations to a dict.check_initializedfingerprintsr   annotationsr   r   )hasattrr   r   r   r   
isinstancegetstrbase64	b64decodehex)r   r    resourcehr8   ps         r&   ConvertFingerprintrC   N   s    X*+zz)228<=H HxH^$<n%	AEE'NC	(%%aj1557'
 &
 h8<<#>-!88k&**+A2F! !'
AeH G +h}	/r4   c           	         t         j                  j                  | d   d      }t         j                  j                         }|j	                  dd       |j
                  dz   |j                  z   }t         j                  j                  |j                  d|j                  |j                  |j                  |            }|j                  |fS )zCConvert Versions Describe Response to maven artifact resource name.r   zBartifactregistry.projects.locations.repositories.packages.versionsartifactregistryv1:z?artifactregistry.projects.locations.repositories.mavenArtifacts)
projectsIdlocationsIdrepositoriesIdmavenArtifactsId)r   r   r   CloneRegisterApiByName
packagesId
versionsIdResourceRelativeNameCreaterH   rI   rJ   )r   rregistrymaven_artifacts_idr2   s        r&   r+   r+   g   s    **vJ! %%'(
/6||c)ALL8%%22oo
K\\mm))-  . 
~	%%r4   c           	      j   t        j                         }t        j                         }| j                  }t	        j
                  |       }t	        j                  |       }| j                  xs2 t        j                  j                  j                  j                         }| j                  }|j                  dd      j                  dd      }|j                  dd      }t        j                  | j                         }	| j"                  }
t%        j&                         j)                  | j*                        \  }}|	d|	v rd}	| j"                  | j*                  || j"                  }nd}d}
t,        j.                  j1                  t,        j2                  j5                  d	||||
            }||||||	|
d}t	        j6                  t         j8                  fi |\  }}|s!|r|| j*                  k(  rd| _        |	rd| _        t:        j<                  j?                  djA                  ||||             |S )zLists package versions in a given package.

  Args:
    args: User input arguments.

  Returns:
    List of package versiions.
  /z%2F+z%2B^z%5EN,z9artifactregistry.projects.locations.repositories.packages)rH   rI   rJ   rN   )clientmessagespkgserver_filter	page_sizeorder_bylimitzHListing items under project {}, location {}, repository {}, package {}.
)!r
   	GetClientGetMessagesr_   r   GetRepo
GetProjectlocationr   VALUES	artifactsGetpackagereplacer   ParseSortByArgsort_byra   r   RewriterRewritefilterr   rP   rQ   r   rR   RetryOnInvalidArgumentsListVersionsr   statusPrintformat)r0   r[   r\   r_   repor1   rf   rj   escaped_pkgr`   ra   _r^   pkg_pathserver_argsserver_args_skipped	lversionss                    r&   rr   rr      s    &!!#(nn)	d	$OOD!']]Hj//99BBFFH(LL'U+33C?+##C/+''5(
**%$--/77D!]
h h	ZZ 7  **i ie,,
E    ( $+ $(#?#?$*$ y 
 $++5dkdl**fWhg> 
r4   )__doc__
__future__r   r   r   r=   r   apitools.base.protorpcliter    googlecloudsdk.api_lib.artifactsr   googlecloudsdk.api_lib.utilr   $googlecloudsdk.command_lib.artifactsr	   r,   r
   r   googlecloudsdk.corer   r   r   r'   r3   rC   r+   rr    r4   r&   <module>r      sN    6 &  '   0 < 3 R 9 5 # * ),*2&4Ir4   