@@ -42,73 +42,21 @@ def get_headers(api, token):
4242 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
4343 }
4444
45- def fetch_all_releases (repo , token , api_headers ):
46- api_headers = get_headers (True , token )
47- url = f"https://api.github.com/repos/{ repo } /releases"
48-
49- releases = []
50- params = {
51- "per_page" : 100 ,
52- "page" : 1 ,
53- }
54-
55- while True :
56- response = requests .get (url , headers = api_headers , params = params )
57- response .raise_for_status ()
58-
59- page_releases = response .json ()
60- if not page_releases :
61- break
62-
63- releases .extend (page_releases )
64-
65- if len (page_releases ) < params ["per_page" ]:
66- break
67-
68- params ["page" ] += 1
69-
70- return releases
71-
7245# Function to fetch release details from GitHub
7346def fetch_release_details (repo , token , version ):
7447 api_headers = get_headers (True , token )
75- response_acquired = False
76-
77- # First: 5 fast attempts (10s timeout)
78- for attempt in range (1 , 6 ):
79- try :
80- print (f'GitHub API attempt { attempt } /5 (timeout=10s)' )
81- # Get all releases with pagination
82- all_releases = fetch_all_releases (repo , token , api_headers )
83- response_acquired = True
84- break
85-
86- except requests .exceptions .RequestException as e :
87- last_exception = e
88- print (f'\033 [93mAttempt { attempt } failed:\033 [0m { e } ' )
89-
90- if not response_acquired :
91- # Final fallback attempt (600s timeout)
92- try :
93- print ('Final attempt with extended timeout (600s)' )
94- # Get all releases with pagination
95- all_releases = fetch_all_releases (repo , token , api_headers )
96-
97- except requests .exceptions .RequestException as e :
98- print ('\033 [91mFinal attempt failed too\033 [0m' )
99- raise last_exception from e
10048
10149 if "latest" == version :
102- return support .get_latest_release (all_releases ), support . get_previous_release ( all_releases , True )
50+ return support .get_latest_release (repo , api_headers ), None
10351 else :
10452 release_check = None
105- release_check = support .get_specified_release (all_releases , version )
53+ release_check = support .get_specified_release (repo , api_headers , version )
10654 if release_check :
107- return release_check , support .get_latest_release (all_releases )
55+ return release_check , support .get_latest_release (repo , api_headers )
10856 else :
10957 ## Always fallback to latest release
11058 print ("WARNING: Falling back to LATEST release." )
111- return support .get_latest_release (all_releases ), support . get_previous_release ( all_releases , True )
59+ return support .get_latest_release (repo , api_headers ), None
11260
11361# Function to fetch content as JSON from the link
11462def fetch_json_data (download_link , token ):
@@ -514,48 +462,23 @@ def index_release_to_elasticsearch(es : Elasticsearch, index_name, release_detai
514462
515463def is_release_latest (repo , token , release_version ):
516464 api_headers = get_headers (True , token )
517- url = f'https://api.github.com/repos/{ repo } /releases'
518- response_acquired = False
519-
520- # First: 5 fast attempts (10s timeout)
521- for attempt in range (1 , 6 ):
522- try :
523- print (f'GitHub API attempt { attempt } /5 (timeout=10s)' )
524- # Get all releases with pagination
525- all_releases = fetch_all_releases (repo , token , api_headers )
526- response_acquired = True
527- break
528-
529- except requests .exceptions .RequestException as e :
530- last_exception = e
531- print (f'\033 [93mAttempt { attempt } failed:\033 [0m { e } ' )
532-
533- if not response_acquired :
534- # Final fallback attempt (600s timeout)
535- try :
536- print ('Final attempt with extended timeout (600s)' )
537- # Get all releases with pagination
538- all_releases = fetch_all_releases (repo , token , api_headers )
539-
540- except requests .exceptions .RequestException as e :
541- print ('\033 [91mFinal attempt failed too\033 [0m' )
542- raise last_exception from e
543465
544- latest_release = support .get_latest_release (all_releases )
466+ latest_release = support .get_latest_release (repo , api_headers )
467+ specified_release = support .get_specified_release (repo , api_headers , release_version )
545468 if 'latest' == release_version :
546- return None , True
469+ return True
547470 else :
548- return all_releases , release_version == latest_release ['tag_name' ]
471+ return latest_release [ 'tag_name' ] == specified_release ['tag_name' ]
549472
550- def promote_to_latest (releases , repo , token , release_version ):
473+ def promote_to_latest (repo , token , release_version ):
551474 # Headers for authentication
552475 headers = {
553476 "Authorization" : f"token { token } " ,
554477 "Accept" : "application/vnd.github+json"
555478 }
556479
557480 # Step 1: Update the prerelease version and set it as not prerelease
558- selected_release = support .get_specified_release (releases , release_version = release_version )
481+ selected_release = support .get_specified_release (repo , headers , release_version )
559482 if selected_release ['prerelease' ]:
560483 data_selected_release = {
561484 "tag_name" : selected_release ['tag_name' ],
@@ -575,7 +498,7 @@ def promote_to_latest(releases, repo, token, release_version):
575498 raise Exception (f"Failed to update release { selected_release ['name' ]} : { response_1 .status_code } - { response_1 .text } " )
576499
577500 # Step 2: Set the current latest release to prerelease
578- latest_release = support .get_latest_release (releases )
501+ latest_release = support .get_latest_release (repo , headers )
579502 data_latest_release = {
580503 "prerelease" : True
581504 }
@@ -654,6 +577,6 @@ def str2bool(v):
654577 # And then promote to latest if requested
655578 if (args .promote_release_to_latest ):
656579 # If current release isn't latest already
657- releases , is_latest = is_release_latest (args .repo , args .token , args .release_version )
580+ is_latest = is_release_latest (args .repo , args .token , args .release_version )
658581 if (not is_latest ):
659- promote_to_latest (releases , args .repo , args .token , args .release_version )
582+ promote_to_latest (args .repo , args .token , args .release_version )
0 commit comments