@@ -543,16 +543,51 @@ def release_formulas(
543543 if released and not dry_run :
544544 try :
545545 print ("\n Updating repository index..." )
546- index = generate_index (repo_dir )
547-
548- # Update URLs with GitHub asset URLs (required for index_branch mode)
549- if asset_urls :
550- for (name , version ), asset_url in asset_urls .items ():
551- if name in index .packages :
552- for entry in index .packages [name ]:
553- if entry .version == version :
554- entry .url = asset_url
555- break
546+
547+ # Start with existing index or create new one
548+ if repo_index :
549+ index = repo_index
550+ else :
551+ index = Index (generated = datetime .now (), packages = {})
552+
553+ # Add new releases to index
554+ for formula in released :
555+ archive_name = f"{ formula .name } -{ formula .version } .tgz"
556+ archive_path = repo_dir / archive_name
557+
558+ if archive_path .exists ():
559+ from .package import get_package_info
560+ from .utils .hashing import calculate_sha256
561+
562+ meta = get_package_info (archive_path )
563+ digest = calculate_sha256 (archive_path )
564+
565+ # Get URL from asset_urls or use filename
566+ url = asset_urls .get ((formula .name , formula .version ), archive_name )
567+
568+ # Create index entry
569+ entry = IndexEntry (
570+ version = meta .version ,
571+ url = url ,
572+ digest = digest ,
573+ created = datetime .now ()
574+ )
575+
576+ # Add to index
577+ if meta .name not in index .packages :
578+ index .packages [meta .name ] = []
579+
580+ # Check if version already exists (shouldn't happen, but just in case)
581+ existing_versions = [e .version for e in index .packages [meta .name ]]
582+ if meta .version not in existing_versions :
583+ index .packages [meta .name ].append (entry )
584+
585+ # Sort versions (latest first)
586+ for name in index .packages :
587+ index .packages [name ].sort (key = lambda e : e .version , reverse = True )
588+
589+ # Update generation timestamp
590+ index .generated = datetime .now ()
556591
557592 save_index (index , repo_dir )
558593 print (f"Index updated: { len (index .packages )} packages total" )
0 commit comments