Skip to content

Commit fe285a9

Browse files
Updated script
1 parent 5e1306f commit fe285a9

File tree

1 file changed

+57
-13
lines changed

1 file changed

+57
-13
lines changed

scripts/package.py

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,44 @@ def upload_asset_to_release(repo, release_id, asset_path, token, delete_existing
123123
print(f'Uploaded asset: {os.path.basename(asset_path)} to release ID: {release_id}')
124124
return response.json()
125125

126+
# Gets latest release headers from repository
127+
def get_headers(api, token):
128+
if api:
129+
return {
130+
'Authorization': f'token {token}'
131+
}
132+
else:
133+
return {
134+
'Authorization': f'Bearer {token}',
135+
'Accept': 'application/octet-stream'
136+
}
137+
126138
def get_release_id(repo, tag_name, token):
127139
"""Get the release ID for a given tag name."""
128140
url = f'https://api.github.com/repos/{repo}/releases/tags/{tag_name}'
129-
headers = {'Authorization': f'token {token}'}
141+
headers = get_headers(True, token)
130142
response = requests.get(url, headers=headers)
131143
response.raise_for_status()
132144
return response.json()['id']
133145

146+
# Function to fetch release details from GitHub
147+
def fetch_release_details(repo, token, release_version):
148+
api_headers = get_headers(True, token)
149+
url = f'https://api.github.com/repos/{repo}/releases'
150+
response = requests.get(url, headers=api_headers)
151+
response.raise_for_status() # Raise an exception for HTTP errors
152+
if "latest" == release_version:
153+
return support.get_latest_release(response.json())
154+
else:
155+
release_check = None
156+
release_check = support.get_specified_release(response.json(), release_version)
157+
if release_check:
158+
return release_check
159+
else:
160+
## Always fallback to latest release
161+
print("WARNING: Falling back to LATEST release.")
162+
return support.get_latest_release(response.json())
163+
134164
def zip_bsp_related_files(archive_path, repo_dir):
135165
support.copy_files_with_structure(
136166
os.path.join(repo_dir, 'bsp'),
@@ -501,17 +531,31 @@ def str2bool(v):
501531
print('Archive created successfully: %s' % archive_path)
502532
metadata_content['mikrosdk'] = {'version': version}
503533
upload_result = upload_asset_to_release(args.repo, release_id, archive_path, args.token)
504-
print('Asset "%s" uploaded successfully to release ID: %s' % ('mikrosdk', release_id))
534+
print('Asset "%s" uploaded successfully to release ID/Tag name: %s / %s' % ('mikrosdk', release_id, release['tag_name']))
505535

506536
if os.path.exists(os.path.join(repo_dir, 'resources/images')):
507-
archive_path = os.path.join(repo_dir, 'images.7z')
508-
print('Creating archive: %s' % archive_path)
509-
create_custom_archive('resources/images', archive_path)
510-
os.chdir(repo_dir)
511-
metadata_content['images'] = {'hash': hash_directory_contents(os.path.join(repo_dir, 'resources/images'))}
512-
print('Archive created successfully: %s' % archive_path)
513-
upload_result = upload_asset_to_release(args.repo, release_id, archive_path, args.token)
514-
print('Asset "%s" uploaded successfully to release ID: %s' % ('images', release_id))
537+
release = fetch_release_details(args.repo, args.token, 'latest')
538+
previous_images_hash = None
539+
for each_asset in release['assets']:
540+
if each_asset['name'] == 'images.7z':
541+
support.extract_archive_from_url(
542+
each_asset['url'], os.path.join(os.getcwd(), 'tmp/images_asset'), args.token
543+
)
544+
previous_images_hash = hash_directory_contents(os.path.join(os.getcwd(), 'tmp/images_asset'))
545+
shutil.rmtree(os.path.join(os.getcwd(), 'tmp/images_asset'))
546+
break
547+
current_image_hash = hash_directory_contents(os.path.join(os.getcwd(), 'resources/images'))
548+
metadata_content['images'] = {'hash': current_image_hash}
549+
if current_image_hash != previous_images_hash:
550+
archive_path = os.path.join(repo_dir, 'images.7z')
551+
print('Creating archive: %s' % archive_path)
552+
create_custom_archive('resources/images', archive_path)
553+
os.chdir(repo_dir)
554+
print('Archive created successfully: %s' % archive_path)
555+
upload_result = upload_asset_to_release(args.repo, release_id, archive_path, args.token)
556+
print('Asset "%s" uploaded successfully to release ID/Tag name: %s / %s' % ('images', release_id, release['tag_name']))
557+
else:
558+
print('Images not updated. No new files detected.')
515559

516560
if not args.package_boards_or_mcus:
517561
if os.path.exists(os.path.join(repo_dir, 'templates/necto')):
@@ -522,7 +566,7 @@ def str2bool(v):
522566
metadata_content['templates'] = {'hash': hash_directory_contents(os.path.join(repo_dir, 'templates/necto'))}
523567
print('Archive created successfully: %s' % archive_path)
524568
upload_result = upload_asset_to_release(args.repo, release_id, archive_path, args.token)
525-
print('Asset "%s" uploaded successfully to release ID: %s' % ('templates', release_id))
569+
print('Asset "%s" uploaded successfully to release ID/Tag name: %s / %s' % ('templates', release_id, release['tag_name']))
526570

527571
if os.path.exists(os.path.join(repo_dir, 'resources/queries')):
528572
archive_path = os.path.join(repo_dir, 'queries.7z')
@@ -531,7 +575,7 @@ def str2bool(v):
531575
os.chdir(repo_dir)
532576
print('Archive created successfully: %s' % archive_path)
533577
upload_result = upload_asset_to_release(args.repo, release_id, archive_path, args.token)
534-
print('Asset "%s" uploaded successfully to release ID: %s' % ('queries', release_id))
578+
print('Asset "%s" uploaded successfully to release ID/Tag name: %s / %s' % ('queries', release_id, release['tag_name']))
535579

536580
# Package all boards as separate packages
537581
packages = package_board_files(
@@ -585,7 +629,7 @@ def str2bool(v):
585629
print('Creating archive: %s' % archive_path)
586630
zip_bsp_related_files(archive_path, repo_dir)
587631
upload_result = upload_asset_to_release(args.repo, release_id, archive_path, args.token)
588-
print('Asset "%s" uploaded successfully to release ID: %s' % ('bsps', release_id))
632+
print('Asset "%s" uploaded successfully to release ID/Tag name: %s / %s' % ('bsps', release_id, release['tag_name']))
589633

590634
os.makedirs(os.path.join(repo_dir, 'tmp'), exist_ok=True)
591635
if args.package_boards_or_mcus:

0 commit comments

Comments
 (0)