@@ -407,6 +407,41 @@ def save_to_file(filename, ver, date_of_release):
407407
408408 print (f"Saved changelog to { filename } " )
409409
410+ def get_latest_stable_release ():
411+ """Fetch the latest stable release tag from the API.
412+
413+ Returns:
414+ str | None: The latest release tag if successful, None if the request fails
415+ """
416+ url = f"{ BASE_URL } /releases/latest"
417+ try :
418+ res = requests .get (url , headers = HEADERS )
419+ res .raise_for_status ()
420+ res = res .json ()
421+ tag = res ['tag_name' ]
422+ date = get_release_date (res )
423+ return {"tag" :tag ,"date" :date }
424+ except Exception as e :
425+ print (f"Failed to fetch latest stable release" ,e )
426+ return None
427+
428+ def update_config (ver : str , release_date : str , config_file_path : str ):
429+ """Update version and release date in the config file.
430+
431+ Args:
432+ ver (str): New version to set
433+ release_date (str): Release date to set
434+ config_file_path (str): Path to the config file
435+ """
436+ with open (config_file_path , 'r' ) as file :
437+ content = file .read ()
438+
439+ content = re .sub (r'releasedate:\s*".*?"' , f'releasedate: "{ release_date } "' , content )
440+ content = re .sub (r'version:\s*".*?"' , f'version: "{ ver } "' , content )
441+ content = re .sub (r'version_src:\s*".*?"' ,f'version_src: "{ ver } "' ,content )
442+
443+ with open (config_file_path , 'w' ) as file :
444+ file .write (content )
410445
411446if __name__ == '__main__' :
412447 parser = argparse .ArgumentParser (description = "Fetch release data from GitHub and extract PR info" )
@@ -450,6 +485,9 @@ def save_to_file(filename, ver, date_of_release):
450485 all_contribs = sorted (all_contribs , key = lambda x : (x [0 ].startswith ('@' ), x [0 ]))
451486 if all_info :
452487 save_to_file (filepath , ver , date_of_release )
488+ latest_release = get_latest_stable_release ()
489+ if latest_release :
490+ update_config (latest_release ['tag' ],latest_release ['date' ],'conf/config.yaml' )
453491 else :
454492 print ("No information found." )
455493 exit (1 )
0 commit comments