@@ -41,7 +41,18 @@ class Project(TypedDict):
4141 name : str
4242 git_repo : NotRequired [str ]
4343 git_tag : NotRequired [str ]
44+ with_sinks : NotRequired [bool ]
45+ with_sinks : NotRequired [bool ]
46+ with_summaries : NotRequired [bool ]
4447
48+ def shouldGenerateSinks (project : Project ) -> bool :
49+ return project .get ("with_sinks" , False )
50+
51+ def shouldGenerateSources (project : Project ) -> bool :
52+ return project .get ("with_sources" , False )
53+
54+ def shouldGenerateSummaries (project : Project ) -> bool :
55+ return project .get ("with_summaries" , False )
4556
4657def clone_project (project : Project ) -> str :
4758 """
@@ -185,7 +196,7 @@ def build_database(
185196 return database_dir
186197
187198
188- def generate_models (args , project : Project , database_dir : str ) -> None :
199+ def generate_models (language : str , config , project : Project , database_dir : str ) -> None :
189200 """
190201 Generate models for a project.
191202
@@ -196,10 +207,11 @@ def generate_models(args, project: Project, database_dir: str) -> None:
196207 """
197208 name = project ["name" ]
198209
199- generator = mad .Generator (args .lang )
200- generator .generateSinks = args .with_sinks
201- generator .generateSources = args .with_sources
202- generator .generateSummaries = args .with_summaries
210+ generator = mad .Generator (language )
211+ # Note: The argument parser converts with-sinks to with_sinks, etc.
212+ generator .generateSinks = shouldGenerateSinks (project )
213+ generator .generateSources = shouldGenerateSources (project )
214+ generator .generateSummaries = shouldGenerateSummaries (project )
203215 generator .setenvironment (database = database_dir , folder = name )
204216 generator .run ()
205217
@@ -309,13 +321,14 @@ def download_dca_databases(
309321 pat ,
310322 )
311323 targets = response ["targets" ]
324+ project_map = {project ["name" ]: project for project in projects }
312325 for data in targets .values ():
313326 downloads = data ["downloads" ]
314327 analyzed_database = downloads ["analyzed_database" ]
315328 artifact_name = analyzed_database ["artifact_name" ]
316329 pretty_name = pretty_name_from_artifact_name (artifact_name )
317330
318- if not pretty_name in [ project [ "name" ] for project in projects ] :
331+ if not pretty_name in project_map :
319332 print (f"Skipping { pretty_name } as it is not in the list of projects" )
320333 continue
321334
@@ -350,7 +363,7 @@ def download_dca_databases(
350363 tar_ref .extractall (artifact_unzipped_location )
351364 database_results .append (
352365 (
353- { "name" : pretty_name } ,
366+ project_map [ pretty_name ] ,
354367 os .path .join (
355368 artifact_unzipped_location , remove_extension (entry )
356369 ),
@@ -451,7 +464,7 @@ def main(config, args) -> None:
451464
452465 for project , database_dir in database_results :
453466 if database_dir is not None :
454- generate_models (args , project , database_dir )
467+ generate_models (language , config , project , database_dir )
455468
456469
457470if __name__ == "__main__" :
@@ -474,15 +487,6 @@ def main(config, args) -> None:
474487 parser .add_argument (
475488 "--lang" , type = str , help = "The language to generate models for" , required = True
476489 )
477- parser .add_argument (
478- "--with-sources" , action = "store_true" , help = "Generate sources" , required = False
479- )
480- parser .add_argument (
481- "--with-sinks" , action = "store_true" , help = "Generate sinks" , required = False
482- )
483- parser .add_argument (
484- "--with-summaries" , action = "store_true" , help = "Generate sinks" , required = False
485- )
486490 args = parser .parse_args ()
487491
488492 # Load config file
0 commit comments