@@ -123,14 +123,44 @@ def upload_asset_to_release(repo, release_id, asset_path, token, delete_existing
123
123
print (f'Uploaded asset: { os .path .basename (asset_path )} to release ID: { release_id } ' )
124
124
return response .json ()
125
125
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
+
126
138
def get_release_id (repo , tag_name , token ):
127
139
"""Get the release ID for a given tag name."""
128
140
url = f'https://api.github.com/repos/{ repo } /releases/tags/{ tag_name } '
129
- headers = { 'Authorization' : f' token { token } ' }
141
+ headers = get_headers ( True , token )
130
142
response = requests .get (url , headers = headers )
131
143
response .raise_for_status ()
132
144
return response .json ()['id' ]
133
145
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
+
134
164
def zip_bsp_related_files (archive_path , repo_dir ):
135
165
support .copy_files_with_structure (
136
166
os .path .join (repo_dir , 'bsp' ),
@@ -501,17 +531,31 @@ def str2bool(v):
501
531
print ('Archive created successfully: %s' % archive_path )
502
532
metadata_content ['mikrosdk' ] = {'version' : version }
503
533
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' ] ))
505
535
506
536
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.' )
515
559
516
560
if not args .package_boards_or_mcus :
517
561
if os .path .exists (os .path .join (repo_dir , 'templates/necto' )):
@@ -522,7 +566,7 @@ def str2bool(v):
522
566
metadata_content ['templates' ] = {'hash' : hash_directory_contents (os .path .join (repo_dir , 'templates/necto' ))}
523
567
print ('Archive created successfully: %s' % archive_path )
524
568
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' ] ))
526
570
527
571
if os .path .exists (os .path .join (repo_dir , 'resources/queries' )):
528
572
archive_path = os .path .join (repo_dir , 'queries.7z' )
@@ -531,7 +575,7 @@ def str2bool(v):
531
575
os .chdir (repo_dir )
532
576
print ('Archive created successfully: %s' % archive_path )
533
577
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' ] ))
535
579
536
580
# Package all boards as separate packages
537
581
packages = package_board_files (
@@ -585,7 +629,7 @@ def str2bool(v):
585
629
print ('Creating archive: %s' % archive_path )
586
630
zip_bsp_related_files (archive_path , repo_dir )
587
631
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' ] ))
589
633
590
634
os .makedirs (os .path .join (repo_dir , 'tmp' ), exist_ok = True )
591
635
if args .package_boards_or_mcus :
0 commit comments