
    5                         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Zddlm	Z	 ddlm
Z
 ddlmZ d	Z G d
 de
j                        Zy)zEThis package provides DockerImage for examining docker_build outputs.    )absolute_import)division)print_functionN)docker_digest)docker_image)utilzGsha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)LayerzAppends a new layer on top of a base image.

  This augments a base docker image with new files from a gzipped tarball,
  adds environment variables and exposes a port.
  c                 Z   || _         t        j                  | j                   j                               \  }}t	        j
                  |      }t	        j
                  |d   d   d         }|r1|| _        t        j                  | j                        | _	        d|d<   nt        | _	        d| _        d|d<   |d   j                  dd	| j                  i       |d
   |d<   t        j                  t        j                  d            j!                  d      |d
<   |j#                  di       xs i }	t%        |      }|re|D 
cg c]  }
|
j'                  d      d    }}
|	j#                  dg       xs g }|D 
cg c]  }
|
j'                  d      d   |vs|
 }}
||z   |	d<   | |	j#                  di       xs i }i ||<   ||	d<   |	|d<   |d   j                  ddt	        j(                  |d      i       t        j*                  t	        j(                  |d            | _        yc c}
w c c}
w )a  Creates a new layer on top of a base with optional tar.gz, port or envs.

    Args:
      base: a base DockerImage for a new layer.
      tar_gz: an optional gzipped tarball passed as a string with filesystem
          changeset.
      port: an optional port to be exposed, passed as a string. For example:
          '8080/tcp'.
      *envs: environment variables passed as strings in the format:
          'ENV_ONE=val', 'ENV_TWO=val2'.
    historyr   v1CompatibilityF	throwaway    TfsLayersblobSumidparent    utf8config=EnvNExposedPorts)	sort_keys)_baser   DetachSignaturesmanifestjsonloads_blobr   SHA256	_blob_sum_EMPTY_LAYER_TAR_IDinsertbinasciihexlifyosurandomdecodegetlistsplitdumpsSign	_manifest)selfbasetar_gzportenvsunsigned_manifestunused_signaturesr   	v1_compatr   envenv_keysold_envs	old_portss                 6lib/third_party/containerregistry/client/v2/append_.py__init__zLayer.__init__'   s    DJ+/+@+@

,((zz+,H

8I.q12CDEIdj$++DJJ7dn$i*dndj#iZIt~~#>?#D/Ih&&rzz"~6==fEIdO]]8R(.BF:D/34t#))C.#th4E2&,"h!)O#SYYs^A->h-N#hOofUm**^R06Biio(f^ IhY	tzz)tDEGYYtzz(dCDDN 5Os   ?H#6H(H(c                     | j                   S 	Override.)r/   r0   s    r<   r   zLayer.manifestY   s    >>r   c                 n    || j                   k(  r| j                  S | j                  j                  |      S r?   )r"   r    r   blob)r0   digests     r<   rC   z
Layer.blob]   s+    ZZ::??6""r   c                     | S r?    rA   s    r<   	__enter__zLayer.__enter__d   s    Kr   c                      y)r@   NrF   )r0   unused_typeunused_valueunused_tracebacks       r<   __exit__zLayer.__exit__h   s    
r   N)	__name__
__module____qualname____doc__r=   r   rC   rG   rL   rF   r   r<   r
   r
       s"    0Ed#r   r
   )rP   
__future__r   r   r   r%   r   r'   containerregistry.client.v2r   r   r   r#   DockerImager
   rF   r   r<   <module>rT      sC    L &  %   	 5 4 , ` JL$$ Jr   