aboutsummaryrefslogtreecommitdiff
path: root/.ci/s3-download-release.py
diff options
context:
space:
mode:
Diffstat (limited to '.ci/s3-download-release.py')
-rwxr-xr-x.ci/s3-download-release.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/.ci/s3-download-release.py b/.ci/s3-download-release.py
new file mode 100755
index 0000000..223f7f1
--- /dev/null
+++ b/.ci/s3-download-release.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+
+
+import argparse
+import os
+import os.path
+import sys
+import urllib.request
+
+import tinys3
+
+
+def main():
+ parser = argparse.ArgumentParser(description='S3 File Uploader')
+ parser.add_argument(
+ '--s3-bucket',
+ help=('S3 bucket name (defaults to $S3_UPLOAD_BUCKET)'),
+ default=os.environ.get('S3_UPLOAD_BUCKET'))
+ parser.add_argument(
+ '--s3-region',
+ help=('S3 region (defaults to $S3_UPLOAD_REGION)'),
+ default=os.environ.get('S3_UPLOAD_REGION'))
+ parser.add_argument(
+ '--s3-username',
+ help=('S3 username (defaults to $S3_UPLOAD_USERNAME)'),
+ default=os.environ.get('S3_UPLOAD_USERNAME'))
+ parser.add_argument(
+ '--s3-key',
+ help=('S3 access key (defaults to $S3_UPLOAD_ACCESSKEY)'),
+ default=os.environ.get('S3_UPLOAD_ACCESSKEY'))
+ parser.add_argument(
+ '--s3-secret',
+ help=('S3 secret (defaults to $S3_UPLOAD_SECRET)'),
+ default=os.environ.get('S3_UPLOAD_SECRET'))
+ parser.add_argument(
+ '--destdir',
+ help='Destination directory.')
+ parser.add_argument(
+ 'package', metavar='PACKAGE',
+ help='Package name and version to download.')
+
+ args = parser.parse_args()
+
+ if args.s3_region:
+ endpoint = 's3-{}.amazonaws.com'.format(args.s3_region.lower())
+ else:
+ endpoint = 's3.amazonaws.com'
+
+ conn = tinys3.Connection(
+ access_key=args.s3_key,
+ secret_key=args.s3_secret,
+ default_bucket=args.s3_bucket,
+ tls=True,
+ endpoint=endpoint,
+ )
+
+ files = []
+
+ for entry in conn.list(args.package):
+ files.append(entry['key'])
+
+ destdir = args.destdir or os.getpwd()
+
+ for file in files:
+ print('Downloading {}...'.format(file))
+ url = 'https://{}/{}/{}'.format(endpoint, args.s3_bucket, file)
+ target = os.path.join(destdir, file)
+ urllib.request.urlretrieve(url, target)
+
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())