
                             d Z ddlmZ ddlmZ ddl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dlZ ej,                  d      Zej1                  dddd       ej1                  dddd       ej1                  dddd       ej1                  ddd       d Zd! Zd" Zed#k(  r" ej:                         5   e        ddd       yy# 1 sw Y   yxY w)$z0This package pushes images to a Docker Registry.    )absolute_import)print_functionN)docker_creds)docker_name)docker_image)docker_session)
oci_compat)logging_setup)patched)retry)transport_poolz!Push images to a Docker Registry.)descriptionz--namestorez%The name of the docker image to push.T)actionhelprequiredz	--tarballz Where to load the image tarball.z--stamp-info-fileappendFzbA list of files from which to read substitutions to make in the provided --name, e.g. {BUILD_USER})r   r   r   z--oci
store_truez$Push the image with an OCI Manifest.)r   r      c           
      <   i }|xs g D ]_  }t        |      5 }|D ]C  }|j                  d      }|j                  dd      \  }}||v rt        d|d|d       |||<   E 	 ddd       a  | j                  di |}t        j                  |      S # 1 sw Y   xY w)	z/Perform substitutions in the provided tag name.
    z"WARNING: Duplicate value for key "z
": using ""N )openstripsplitprintformatr   Tag)	namefilesformat_argsinfofileinfolinekeyvalueformatted_names	            9lib/third_party/containerregistry/tools/docker_pusher_.pyr!   r!   <   s    ++2+h	h4$zz$ZZQ'
U+
!$e- / C  
  4;;--.		(( 
s   A	BB	c                  &   t        j                  t               t        j                         } t        j                  |        t        j                         }|j                  t        j                        }t        j                  |j                  t              }t        | j                  | j                        }t!        j"                  d| j$                         t'        j(                  | j$                        5 }	 t*        j,                  j/                  |      }	 t9        j:                  ||t              5 }t!        j"                  d       | j<                  r@t?        j@                  |      5 }|jC                  |       |jE                         }	d d d        n!|jC                  |       |jE                         }	tG        djI                  |		             d d d        d d d        y # t0        $ r7}t!        j2                  d||       t5        j6                  d       Y d }~	d }~ww xY w# 1 sw Y   yxY w# 1 sw Y   axY w# t0        $ r6}t!        j2                  d
||       t5        j6                  d       Y d }~d }~ww xY w# 1 sw Y   y xY w)N)args)sizez"Reading v2.2 image from tarball %rz&Error resolving credentials for %s: %sr   )threadszStarting upload ...z*{name} was published with digest: {digest})r"   digestzError publishing %s: %s)%r
   DefineCommandLineArgsparser
parse_argsInitr   FactoryWithSourceTransportCallablehttplib2Httpr   Build_THREADSr!   r"   stamp_info_fileloggingr&   tarball
v2_2_imageFromTarballr   DefaultKeychainResolve	Exceptionfatalsysexitr   Pushocir	   
OCIFromV22uploadr0   r   r    )
r-   retry_factory	transportr"   v2_2_imgcredsesessionoci_imgr0   s
             r+   mainrQ   N   s   %%f-				$$--/-;;HMMJ-!!-"5"5HE)
 
TYY,,	-$	,,3T\\Bdll+x**2248e
y(47>*+88$$X.'NN7#^^%F /. ..
"??$&;BBf C & 	(4 ,+  mm<dAF	hhqkk /.	4 4  mm-tQ7	hhqkk3 ,+s   ;J=G*I:7H91"H-AH9I*	H*3,H%J%H**J-H62H99I	>I	J,I?:J?JJJ__main__)__doc__
__future__r   r   argparser<   rD   containerregistry.clientr   r   containerregistry.client.v2_2r   r>   r   r	   containerregistry.toolsr
   r   containerregistry.transportr   r   r7   ArgumentParserr2   add_argumentr:   r!   rQ   __name__Httplib2r       r+   <module>r_      s   7 & %   
 1 0 D 8 4 1 + - 6  
!	 	 3
5   W#J     &H     >	  @   L'M  O )$*Z zwF  s   C++C4