TP-31200 | Apk Size Diff Summary Generator (#6881)

link: "https://github.cmd.navi-tech.in/medici/android-customer-app/pull/6881"
This commit is contained in:
Balrambhai Sharma
2023-07-10 16:12:27 +05:30
committed by GitHub Enterprise
parent c2774e25d1
commit a5636dba22
5 changed files with 249 additions and 0 deletions

View File

@@ -0,0 +1 @@
boto3

View File

@@ -0,0 +1,70 @@
import os
import shutil
import boto3
from botocore.exceptions import ClientError
import sys
bucket = 'navi-github-actions-cache'
s3_file_name = 'latest_build.apk'
class ProgressTracker:
def __init__(self, total_size):
self.total_size = total_size
self.bytes_uploaded = 0
self.bytes_downloaded = 0
def upload_progress_callback(self, bytes_uploaded):
self.bytes_uploaded += bytes_uploaded
bytes_left = self.total_size - self.bytes_uploaded
print(f"Uploaded: {to_mb(self.bytes_uploaded)} MB, Remaining: {to_mb(bytes_left)} MB, Total : {to_mb(self.total_size)} MB")
def download_progress_callback(self, bytes_amount):
self.bytes_downloaded += bytes_amount
bytes_left = self.total_size - self.bytes_downloaded
print(f"Downloaded: {to_mb(self.bytes_downloaded)} MB, Remaining : {to_mb(bytes_left)} MB, Total : {to_mb(self.total_size)} MB")
def upload_file(access_key, secret_key, local_path):
try:
file_path = local_path
file_size = os.path.getsize(file_path)
tracker = ProgressTracker(file_size)
s3 = boto3.client('s3', aws_access_key_id=access_key,
aws_secret_access_key=secret_key)
print('Uploading apk')
print(os.listdir())
response = s3.upload_file(file_path, bucket, s3_file_name, Callback=tracker.upload_progress_callback)
print('File Uploaded Successfully')
except Exception as e:
print(f"Error uploading file: {str(e)}")
def download_file(access_key, secret_key, local_path):
try:
# Create the directory for the local file path if it doesn't exist
os.makedirs(os.path.dirname(local_path), exist_ok=True)
s3 = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key)
file_info = s3.head_object(Bucket=bucket, Key=s3_file_name)
file_size = file_info['ContentLength']
tracker = ProgressTracker(file_size)
with open(local_path, 'wb') as f:
s3.download_fileobj(bucket, s3_file_name, f, Callback=tracker.download_progress_callback)
print("File downloaded successfully.")
print(local_path) # Print the file path
except Exception as e:
print(f"Error downloading file: {str(e)}")
def to_mb(bytes):
return round(bytes/(1024*1024), 2)
if __name__ == "__main__":
command = sys.argv[1]
access_key = sys.argv[2]
secret_key = sys.argv[3]
if command == 'download':
local_path = sys.argv[4]
download_file(access_key, secret_key, local_path)
elif command == 'upload':
local_path = sys.argv[4]
upload_file(access_key, secret_key, local_path)