1515"""
1616from charon .utils .files import HashType
1717import charon .pkgs .indexing as indexing
18- from charon .utils .files import overwrite_file , digest
18+ from charon .utils .files import overwrite_file , digest , write_manifest
1919from charon .utils .archive import extract_zip_all
2020from charon .utils .strings import remove_prefix
2121from charon .storage import S3Client
@@ -261,7 +261,9 @@ def handle_maven_uploading(
261261 prefix = None ,
262262 dir_ = None ,
263263 do_index = True ,
264- dry_run = False
264+ dry_run = False ,
265+ target = None ,
266+ manifest_bucket_name = None
265267) -> str :
266268 """ Handle the maven product release tarball uploading process.
267269 * repo is the location of the tarball in filesystem
@@ -302,6 +304,8 @@ def handle_maven_uploading(
302304 # Question: should we exit here?
303305
304306 prefix_ = remove_prefix (prefix , "/" )
307+
308+ manifest_name , manifest_full_path = write_manifest (valid_mvn_paths , top_level , prod_key )
305309 # 4. Do uploading
306310 logger .info ("Start uploading files to s3" )
307311 s3_client = S3Client (aws_profile = aws_profile , dry_run = dry_run )
@@ -312,7 +316,12 @@ def handle_maven_uploading(
312316 )
313317 logger .info ("Files uploading done\n " )
314318
315- # 5. Use uploaded poms to scan s3 for metadata refreshment
319+ # 5. Do manifest uploading
320+ logger .info ("Start uploading manifest to s3" )
321+ s3_client .upload_manifest (manifest_name , manifest_full_path , target , manifest_bucket_name )
322+ logger .info ("Manifest uploading is done\n " )
323+
324+ # 6. Use uploaded poms to scan s3 for metadata refreshment
316325 logger .info ("Start generating maven-metadata.xml files for all artifacts" )
317326 meta_files = _generate_metadatas (
318327 s3 = s3_client , bucket = bucket ,
@@ -322,7 +331,7 @@ def handle_maven_uploading(
322331 logger .info ("maven-metadata.xml files generation done\n " )
323332
324333 failed_metas = meta_files .get (META_FILE_FAILED , [])
325- # 6 . Upload all maven-metadata.xml
334+ # 7 . Upload all maven-metadata.xml
326335 if META_FILE_GEN_KEY in meta_files :
327336 logger .info ("Start updating maven-metadata.xml to s3" )
328337 (_ , _failed_metas ) = s3_client .upload_metadatas (
@@ -335,7 +344,7 @@ def handle_maven_uploading(
335344 failed_metas .extend (_failed_metas )
336345 logger .info ("maven-metadata.xml updating done\n " )
337346
338- # 7 . Determine refreshment of archetype-catalog.xml
347+ # 8 . Determine refreshment of archetype-catalog.xml
339348 if os .path .exists (os .path .join (top_level , "archetype-catalog.xml" )):
340349 logger .info ("Start generating archetype-catalog.xml" )
341350 upload_archetype_file = _generate_upload_archetype_catalog (
@@ -345,7 +354,7 @@ def handle_maven_uploading(
345354 )
346355 logger .info ("archetype-catalog.xml files generation done\n " )
347356
348- # 8 . Upload archetype-catalog.xml if it has changed
357+ # 9 . Upload archetype-catalog.xml if it has changed
349358 if upload_archetype_file :
350359 archetype_files = [os .path .join (top_level , ARCHETYPE_CATALOG_FILENAME )]
351360 archetype_files .extend (__hash_decorate_metadata (top_level , ARCHETYPE_CATALOG_FILENAME ))
@@ -397,7 +406,9 @@ def handle_maven_del(
397406 prefix = None ,
398407 dir_ = None ,
399408 do_index = True ,
400- dry_run = False
409+ dry_run = False ,
410+ target = None ,
411+ manifest_bucket_name = None
401412) -> str :
402413 """ Handle the maven product release tarball deletion process.
403414 * repo is the location of the tarball in filesystem
@@ -425,7 +436,6 @@ def handle_maven_del(
425436 valid_dirs ) = _scan_paths (tmp_root , ignore_patterns , root )
426437
427438 # 3. Delete all valid_paths from s3
428- logger .info ("Start generating maven-metadata.xml files for all artifacts" )
429439 logger .debug ("Valid poms: %s" , valid_poms )
430440 prefix_ = remove_prefix (prefix , "/" )
431441 logger .info ("Start deleting files from s3" )
@@ -440,7 +450,12 @@ def handle_maven_del(
440450 )
441451 logger .info ("Files deletion done\n " )
442452
443- # 4. Use changed GA to scan s3 for metadata refreshment
453+ # 4. Delete related manifest from s3
454+ logger .info ("Start deleting manifest from s3" )
455+ s3_client .delete_manifest (prod_key , target , manifest_bucket_name )
456+ logger .info ("Manifest deletion is done\n " )
457+
458+ # 5. Use changed GA to scan s3 for metadata refreshment
444459 logger .info ("Start generating maven-metadata.xml files for all changed GAs" )
445460 meta_files = _generate_metadatas (
446461 s3 = s3_client , bucket = bucket ,
@@ -450,7 +465,7 @@ def handle_maven_del(
450465
451466 logger .info ("maven-metadata.xml files generation done\n " )
452467
453- # 5 . Upload all maven-metadata.xml. We need to delete metadata files
468+ # 6 . Upload all maven-metadata.xml. We need to delete metadata files
454469 # firstly for all affected GA, and then replace the theirs content.
455470 logger .info ("Start updating maven-metadata.xml to s3" )
456471 all_meta_files = []
@@ -475,7 +490,7 @@ def handle_maven_del(
475490 failed_metas .extend (_failed_metas )
476491 logger .info ("maven-metadata.xml updating done\n " )
477492
478- # 6 . Determine refreshment of archetype-catalog.xml
493+ # 7 . Determine refreshment of archetype-catalog.xml
479494 if os .path .exists (os .path .join (top_level , "archetype-catalog.xml" )):
480495 logger .info ("Start generating archetype-catalog.xml" )
481496 archetype_action = _generate_rollback_archetype_catalog (
@@ -485,7 +500,7 @@ def handle_maven_del(
485500 )
486501 logger .info ("archetype-catalog.xml files generation done\n " )
487502
488- # 7 . Upload or Delete archetype-catalog.xml if it has changed
503+ # 8 . Upload or Delete archetype-catalog.xml if it has changed
489504 archetype_files = [os .path .join (top_level , ARCHETYPE_CATALOG_FILENAME )]
490505 archetype_files .extend (__hash_decorate_metadata (top_level , ARCHETYPE_CATALOG_FILENAME ))
491506 if archetype_action < 0 :
0 commit comments