@@ -238,7 +238,6 @@ def generate_gyb_file(gyb_file: str) -> None:
238
238
pass
239
239
240
240
241
-
242
241
# Generate the syntax node `.swift` files from `SyntaxNodes.swift.gyb.template`.
243
242
# `destination_dir` is not `None`, the resulting files will be written to
244
243
# `destination_dir/syntax_nodes`, otherwise they will be written to
@@ -286,52 +285,49 @@ def generate_syntax_node_template_gyb_files(
286
285
)
287
286
288
287
289
- def generate_gyb_files (
290
- gyb_exec : str , verbose : bool , add_source_locations : bool ,
288
+ # Maps directories containing .gyb files to the directories the generated files should
289
+ # live in.
290
+ def gyb_dir_mapping (
291
291
swiftsyntax_destination : Optional [str ] = None ,
292
292
swiftsyntaxbuilder_destination : Optional [str ] = None ,
293
293
swiftsyntaxparser_destination : Optional [str ] = None ,
294
- swiftsyntaxbuildergenerator_destination : Optional [str ] = None
294
+ swiftsyntaxbuildergenerator_destination : Optional [str ] = None ,
295
+ ) -> Dict [str , Optional [str ]]:
296
+ """
297
+
298
+ """
299
+ return {
300
+ SWIFTSYNTAX_DIR : swiftsyntax_destination ,
301
+ SWIFTSYNTAXBUILDER_DIR : swiftsyntaxbuilder_destination ,
302
+ SWIFTSYNTAXPARSER_DIR : swiftsyntaxparser_destination ,
303
+ SWIFTSYNTAXBUILDERGENERATION_DIR : swiftsyntaxbuildergenerator_destination ,
304
+ }
305
+
306
+
307
+ def generate_gyb_files (
308
+ gyb_exec : str , gyb_dir_mapping : Dict [str , Optional [str ]],
309
+ add_source_locations : bool , verbose : bool ,
295
310
) -> None :
296
311
print ("** Generating gyb Files **" )
297
312
298
313
check_gyb_exec (gyb_exec )
299
314
check_rsync ()
300
315
301
- generate_gyb_files_helper (
302
- SWIFTSYNTAX_DIR ,
303
- swiftsyntax_destination ,
304
- gyb_exec ,
305
- add_source_locations ,
306
- verbose
307
- )
308
- generate_gyb_files_helper (
309
- SWIFTSYNTAXBUILDER_DIR ,
310
- swiftsyntaxbuilder_destination ,
311
- gyb_exec ,
312
- add_source_locations ,
313
- verbose
314
- )
315
- generate_gyb_files_helper (
316
- SWIFTSYNTAXPARSER_DIR ,
317
- swiftsyntaxparser_destination ,
318
- gyb_exec ,
319
- add_source_locations ,
320
- verbose
321
- )
322
- generate_gyb_files_helper (
323
- SWIFTSYNTAXBUILDERGENERATION_DIR ,
324
- swiftsyntaxbuildergenerator_destination ,
325
- gyb_exec ,
326
- add_source_locations ,
327
- verbose
328
- )
329
- generate_syntax_node_template_gyb_files (
330
- swiftsyntax_destination ,
331
- gyb_exec ,
332
- add_source_locations ,
333
- verbose
334
- )
316
+ for source_dir , destination_dir in gyb_dir_mapping .items ():
317
+ generate_gyb_files_helper (
318
+ source_dir ,
319
+ destination_dir ,
320
+ gyb_exec ,
321
+ add_source_locations ,
322
+ verbose
323
+ )
324
+ if source_dir == SWIFTSYNTAX_DIR :
325
+ generate_syntax_node_template_gyb_files (
326
+ destination_dir ,
327
+ gyb_exec ,
328
+ add_source_locations ,
329
+ verbose
330
+ )
335
331
336
332
print ("** Done Generating gyb Files **" )
337
333
@@ -459,50 +455,29 @@ def build(self, product_name: str) -> None:
459
455
460
456
461
457
def verify_generated_files (gyb_exec : str , verbose : bool ) -> None :
462
- user_swiftsyntax_generated_dir = os .path .join (
463
- SWIFTSYNTAX_DIR , "gyb_generated"
464
- )
465
- user_swiftsyntaxbuilder_generated_dir = os .path .join (
466
- SWIFTSYNTAXBUILDER_DIR , "gyb_generated"
467
- )
468
- user_swiftsyntaxparser_generated_dir = os .path .join (
469
- SWIFTSYNTAXPARSER_DIR , "gyb_generated"
470
- )
471
- user_swiftsyntaxbuildergeneration_generated_dir = os .path .join (
472
- SWIFTSYNTAXBUILDERGENERATION_DIR , "gyb_generated"
458
+ gyb_dirs = gyb_dir_mapping (
459
+ swiftsyntax_destination = tempfile .mkdtemp (),
460
+ swiftsyntaxbuilder_destination = tempfile .mkdtemp (),
461
+ swiftsyntaxparser_destination = tempfile .mkdtemp (),
462
+ swiftsyntaxbuildergenerator_destination = tempfile .mkdtemp (),
473
463
)
474
464
475
- self_swiftsyntax_generated_dir = tempfile .mkdtemp ()
476
- self_swiftsyntaxbuilder_generated_dir = tempfile .mkdtemp ()
477
- self_swiftsyntaxparser_generated_dir = tempfile .mkdtemp ()
478
- self_swiftsyntaxbuildergeneration_generated_dir = tempfile .mkdtemp ()
479
-
480
465
generate_gyb_files (
481
466
gyb_exec ,
482
- verbose = verbose ,
467
+ gyb_dir_mapping = gyb_dirs ,
483
468
add_source_locations = False ,
484
- swiftsyntax_destination = self_swiftsyntax_generated_dir ,
485
- swiftsyntaxbuilder_destination = self_swiftsyntaxbuilder_generated_dir ,
486
- swiftsyntaxparser_destination = self_swiftsyntaxparser_generated_dir ,
487
- swiftsyntaxbuildergenerator_destination = self_swiftsyntaxbuildergeneration_generated_dir # noqa: E501
469
+ verbose = verbose ,
488
470
)
489
471
490
- check_generated_files_match (
491
- self_swiftsyntax_generated_dir ,
492
- user_swiftsyntax_generated_dir
493
- )
494
- check_generated_files_match (
495
- self_swiftsyntaxbuilder_generated_dir ,
496
- user_swiftsyntaxbuilder_generated_dir
497
- )
498
- check_generated_files_match (
499
- self_swiftsyntaxparser_generated_dir ,
500
- user_swiftsyntaxparser_generated_dir
501
- )
502
- check_generated_files_match (
503
- self_swiftsyntaxbuildergeneration_generated_dir ,
504
- user_swiftsyntaxbuildergeneration_generated_dir
505
- )
472
+ for source_dir , destination_dir in gyb_dir_mapping .items ():
473
+ if destination_dir is None :
474
+ raise ValueError ('gyb_dir_mapping should have custom temp dirs' )
475
+
476
+ pre_generated_dir = os .path .join (source_dir , "gyb_generated" )
477
+ check_generated_files_match (
478
+ pre_generated_dir ,
479
+ destination_dir
480
+ )
506
481
507
482
508
483
def verify_code_generated_files (
@@ -710,8 +685,9 @@ def generate_source_code_command(args: argparse.Namespace) -> None:
710
685
try :
711
686
generate_gyb_files (
712
687
args .gyb_exec ,
713
- verbose = args . verbose ,
688
+ gyb_dir_mapping = gyb_dir_mapping () ,
714
689
add_source_locations = args .add_source_locations ,
690
+ verbose = args .verbose ,
715
691
)
716
692
except subprocess .CalledProcessError as e :
717
693
fail_for_called_process_error ("Generating .gyb files failed" , e )
0 commit comments