2323import getopt
2424import shutil
2525import S3
26+ import sha # Need to support python 2.4, see SESPRINGPYTHONPY-56
2627
2728############################################################################
2829# Get external properties and load into a dictionary. NOTE: These properties
@@ -136,13 +137,19 @@ def package(dir, version):
136137 build ("samples" , version )
137138 os .system ("mv *.tar.gz %s" % dir )
138139
139- def publish (filename , BUCKET_NAME , AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY ):
140- KEY_NAME = p ["s3.key_prefix" ] + filename .split ("/" )[- 1 ]
140+ def publish (filepath , s3bucket , AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY ):
141+ filename = filepath .split ("/" )[- 1 ]
142+ s3key = "/" .join ([ p ['release.type' ],
143+ p ['project.key' ],
144+ p ['natural.name' ],
145+ filename ])
141146
142- print "Reading in content from %s" % filename
143- filedata = open (filename , "rb" ).read ()
147+ print "Reading in content from %s" % filepath
148+ filedata = open (filepath , "rb" ).read ()
144149
145- print "Preparing to upload %s to %s/%s" % (filename , BUCKET_NAME , KEY_NAME )
150+ filehash = sha .new (filedata ).hexdigest ()
151+
152+ print "Preparing to upload %s to %s/%s" % (filename , s3bucket , s3key )
146153
147154 content_type = mimetypes .guess_type (filename )[0 ]
148155 if content_type is None :
@@ -153,14 +160,26 @@ def publish(filename, BUCKET_NAME, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY):
153160 print "Connecting to S3..."
154161 conn = S3 .AWSAuthConnection (AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY )
155162
156- print "Checking if bucket %s exists..." % BUCKET_NAME
157- check = conn .check_bucket_exists (BUCKET_NAME )
163+ print "Checking if bucket %s exists..." % s3bucket
164+ check = conn .check_bucket_exists (s3bucket )
158165 if (check .status == 200 ):
159- print "It does! Now uploading %s to %s/%s" % (filename , BUCKET_NAME , KEY_NAME )
166+ print "Uploading %s to %s/%s" % (filename , s3bucket , s3key )
160167 print conn .put (
161- BUCKET_NAME ,
162- KEY_NAME ,
168+ s3bucket ,
169+ s3key ,
163170 S3 .S3Object (filedata ),
171+ { 'Content-Type' : content_type ,
172+ 'x-amz-acl' : 'public-read' ,
173+ 'x-amz-meta-project.name' : 'Spring Extensions' ,
174+ 'x-amz-meta-release.type' : p ['release.type' ],
175+ 'x-amz-meta-bundle.version' : p ['version' ],
176+ 'x-amz-meta-package.file.name' : filename } ).message
177+
178+ print "Uploading SHA1 digest to %s/%s" % (s3bucket , s3key + '.sha1' )
179+ print conn .put (
180+ s3bucket ,
181+ s3key + '.sha1' ,
182+ S3 .S3Object (filehash + ' ' + filename + "\n " ),
164183 { 'Content-Type' : content_type , 'x-amz-acl' : 'public-read' }).message
165184 else :
166185 print "Error code %s: Unable to publish" % check .status
0 commit comments