2626from __future__ import annotations
2727
2828import os
29+ from queue import Queue
2930import re
3031import json
3132from datetime import datetime
@@ -1473,14 +1474,13 @@ def audit(endpoint: pf.Platform, audit_settings: types.ConfigSettings, key_list:
14731474 return problems
14741475
14751476
1476- def __export_thread (queue : Queue [Project ], results : dict [str , str ], export_settings : types .ConfigSettings ) -> None :
1477+ def __export_thread (queue : Queue [Project ], results : dict [str , str ], export_settings : types .ConfigSettings , write_q : Optional [ Queue ] = None ) -> None :
14771478 """Project export callback function for multitheaded export"""
14781479 while not queue .empty ():
14791480 project = queue .get ()
14801481 exp_json = project .export (export_settings = export_settings )
1481- if export_settings .get ("WRITE_QUEUE" , None ):
1482- log .info ("Putting %s in queue %s" , project .key , str (export_settings ["WRITE_QUEUE" ]))
1483- export_settings ["WRITE_QUEUE" ].put (exp_json )
1482+ if write_q :
1483+ write_q .put (exp_json )
14841484 else :
14851485 results [project .key ] = exp_json
14861486 results [project .key ].pop ("key" , None )
@@ -1490,10 +1490,11 @@ def __export_thread(queue: Queue[Project], results: dict[str, str], export_setti
14901490 if nb % 10 == 0 or nb == tot :
14911491 log .info ("%d/%d projects exported (%d%%)" , nb , tot , (nb * 100 ) // tot )
14921492 queue .task_done ()
1493- log .info ("Putting DONE in queue %s" , str (export_settings ["WRITE_QUEUE" ]))
14941493
14951494
1496- def export (endpoint : pf .Platform , export_settings : types .ConfigSettings , key_list : types .KeyList = None ) -> types .ObjectJsonRepr :
1495+ def export (
1496+ endpoint : pf .Platform , export_settings : types .ConfigSettings , key_list : Optional [types .KeyList ] = None , write_q : Optional [Queue ] = None
1497+ ) -> types .ObjectJsonRepr :
14971498 """Exports all or a list of projects configuration as dict
14981499
14991500 :param Platform endpoint: reference to the SonarQube platform
@@ -1515,12 +1516,13 @@ def export(endpoint: pf.Platform, export_settings: types.ConfigSettings, key_lis
15151516 project_settings = {}
15161517 for i in range (export_settings .get ("THREADS" , 8 )):
15171518 log .debug ("Starting project export thread %d" , i )
1518- worker = Thread (target = __export_thread , args = (q , project_settings , export_settings ))
1519- worker .setDaemon ( True )
1520- worker .setName ( f"ProjectExport{ i } " )
1519+ worker = Thread (target = __export_thread , args = (q , project_settings , export_settings , write_q ))
1520+ worker .daemon = True
1521+ worker .name = f"ProjectExport{ i } "
15211522 worker .start ()
15221523 q .join ()
1523- export_settings ["WRITE_QUEUE" ].put (None )
1524+ if write_q :
1525+ write_q .put (None )
15241526 return dict (sorted (project_settings .items ()))
15251527
15261528
0 commit comments