
    %                     l   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  ej*                  ej,                  j.                  ej,                  j0                  ej,                  j2                         G d dej4                               Zy)z<Implements the command to upload Go modules to a repository.    )absolute_import)division)unicode_literalsN)transfer)
exceptions)apis)waiter)base)flags)go_util)	resourcesc                   4    e Zd ZdZdZdddZed        Zd Zy)	Uploadz-Upload a Go module to an artifact repository.v1z{description}a      To upload version v0.1.0 of a Go module located in /path/to/code/ to a repository in "us-central1":

        $ {command} --location=us-central1 --project=myproject --repository=myrepo           --module-path=the/module/path --version=v0.1.0 --source=/path/to/code
    )DESCRIPTIONEXAMPLESc                    t        j                         j                  |        t        j                  j                  |        | j                  ddddd       | j                  ddd	d
       | j                  ddd	d       y)z\Set up arguements for this command.

    Args:
      parser: An argparse.ArgumentPaser.
    z--sourceSOURCEF.zSThe root directory of the go module source code, defaults to the current directory.)metavarrequireddefaulthelpz--module-pathMODULE_PATHTz!The module path of the Go module.)r   r   r   z	--versionVERSIONzThe version of the Go module.N)r   GetRequiredRepoFlagAddToParserr
   
ASYNC_FLAGadd_argument)parsers    "lib/surface/artifacts/go/upload.pyArgszUpload.Args5   s     
++F3OO'
-  . 0	  2
 ,	  .    c                    t        j                  d| j                        }d|j                  d<   |j                  }t        j                         }t        j                  j                  |d      }t        j                         } ||j                  |j                  |j                  |      }|j                  r"t!        j"                  d|j$                  z         |j&                  j(                  j+                         }|j-                  |j/                         |j1                               }	t2        j4                  j7                  |d	      }
|j8                  j5                  |	|

      }|j:                  }t<        j>                  jA                  |jB                  d      }|jD                  r|S tG        jH                  tG        jJ                  |jL                        |d      }|S )z!Run the go module upload command.artifactregistry	multipartzX-Goog-Upload-Protocolzgo.zip)module_pathversionsourceoutputz!failed to package the go module: )uploadGoModuleRequestparentzapplication/zip)	mime_type)uploadz.artifactregistry.projects.locations.operations)
collectionzUploading package)'r   GetClientInstanceapi_versionadditional_http_headersMESSAGES_MODULEtempfilemkdtempospathjoinr   PackOperationr'   r(   r)   	exit_coder   InvalidGoModuleErrorstderrCONCEPTS
repositoryParseCArtifactregistryProjectsLocationsRepositoriesGoModulesUploadRequestUploadGoModuleRequestRelativeNamer   r   FromFile)projects_locations_repositories_goModules	operationr   REGISTRYParseRelativeNamenameasync_r	   WaitForCloudOperationPollerNoResourcesprojects_locations_operations)selfargsclientmessagestempdirzip_pathpackpack_resultrepo_refrequestr.   op_objopop_refresults                  r!   Runz
Upload.RunQ   s    ##$68H8HIF?JF""#;<%%H Gww||GX.H  "D$${{	K
 ++
-0B0B
BD D }}''--/HZZ&<<>$$& [ (G __%%h:K%LF==DD E  F			B11
L 2 NF {{m~~

0
02245;
f mr#   N)	__name__
__module____qualname____doc__r1   detailed_helpstaticmethodr"   r[    r#   r!   r   r   "   s6     6+ 	
- . .6(r#   r   )r_   
__future__r   r   r   r6   r4   apitools.base.pyr    googlecloudsdk.api_lib.artifactsr   googlecloudsdk.api_lib.utilr   r	   googlecloudsdk.callioper
   $googlecloudsdk.command_lib.artifactsr   r   googlecloudsdk.corer   ReleaseTracksReleaseTrackALPHABETAGACommandr   rb   r#   r!   <module>rp      s    C &  ' 	  % 7 , . ( 6 8 ) D%%++T->->-C-C%%((*UT\\ U*Ur#   