48
48
def fail_for_called_process_error (
49
49
succinct_description : str ,
50
50
error : subprocess .CalledProcessError
51
- ):
51
+ ) -> None :
52
52
printerr (f"FAIL: { succinct_description } " )
53
53
printerr (f"Executing: { escapeCmd (error .cmd )} " )
54
54
printerr (error .output )
@@ -59,7 +59,7 @@ def fail_for_called_process_error(
59
59
# Xcode Projects Generation
60
60
61
61
62
- def xcode_gen (config : str ):
62
+ def xcode_gen (config : str ) -> None :
63
63
print ("** Generate SwiftSyntax as an Xcode project **" )
64
64
os .chdir (PACKAGE_DIR )
65
65
swiftpm_call = ["swift" , "package" , "generate-xcodeproj" ]
@@ -72,16 +72,16 @@ def xcode_gen(config: str):
72
72
# Helpers
73
73
74
74
75
- def printerr (message : str ):
75
+ def printerr (message : str ) -> None :
76
76
print (message , file = sys .stderr )
77
77
78
78
79
- def note (message : str ):
79
+ def note (message : str ) -> None :
80
80
print ("--- %s: note: %s" % (os .path .basename (sys .argv [0 ]), message ))
81
81
sys .stdout .flush ()
82
82
83
83
84
- def fatal_error (message : str ):
84
+ def fatal_error (message : str ) -> None :
85
85
printerr (message )
86
86
raise SystemExit (1 )
87
87
@@ -97,8 +97,9 @@ def escapeCmd(cmd: List[str]) -> str:
97
97
return " " .join ([escapeCmdArg (arg ) for arg in cmd ])
98
98
99
99
100
- def call (cmd : List [str ], env : Dict [str , str ] = dict (os .environ ), stdout = None ,
101
- stderr = subprocess .STDOUT , verbose : bool = False ):
100
+ def call (cmd : List [str ], env : Dict [str , str ] = dict (os .environ ),
101
+ stdout : Optional [int ] = None , stderr : Optional [int ] = subprocess .STDOUT ,
102
+ verbose : bool = False ) -> int :
102
103
if verbose :
103
104
print (escapeCmd (cmd ))
104
105
process = subprocess .Popen (cmd , env = env , stdout = stdout , stderr = stderr )
@@ -108,7 +109,7 @@ def call(cmd: List[str], env: Dict[str, str] = dict(os.environ), stdout=None,
108
109
109
110
110
111
def check_call (cmd : List [str ], cwd : Optional [str ] = None ,
111
- env : Dict [str , str ] = dict (os .environ ), verbose : bool = False ):
112
+ env : Dict [str , str ] = dict (os .environ ), verbose : bool = False ) -> None :
112
113
if verbose :
113
114
print (escapeCmd (cmd ))
114
115
subprocess .check_call (cmd , cwd = cwd , env = env , stderr = subprocess .STDOUT )
@@ -124,7 +125,7 @@ def realpath(path: Optional[str]) -> Optional[str]:
124
125
# Generating gyb Files
125
126
126
127
127
- def check_gyb_exec (gyb_exec : str ):
128
+ def check_gyb_exec (gyb_exec : str ) -> None :
128
129
if not os .path .exists (gyb_exec ):
129
130
fatal_error (
130
131
"""
@@ -139,10 +140,9 @@ def check_gyb_exec(gyb_exec: str):
139
140
)
140
141
141
142
142
- def check_rsync ():
143
- with open (os .devnull , "w" ) as DEVNULL :
144
- if call (["rsync" , "--version" ], stdout = DEVNULL ) != 0 :
145
- fatal_error ("Error: Could not find rsync." )
143
+ def check_rsync () -> None :
144
+ if call (["rsync" , "--version" ], stdout = subprocess .DEVNULL ) != 0 :
145
+ fatal_error ("Error: Could not find rsync." )
146
146
147
147
148
148
def generate_single_gyb_file (
@@ -154,7 +154,7 @@ def generate_single_gyb_file(
154
154
add_source_locations : bool ,
155
155
additional_gyb_flags : List [str ],
156
156
verbose : bool ,
157
- ):
157
+ ) -> None :
158
158
# Source locations are added by default by gyb, and cleared by passing
159
159
# `--line-directive=` (nothing following the `=`) to the generator. Our
160
160
# flag is the reverse; we don't want them by default, only if requested.
@@ -195,7 +195,7 @@ def generate_gyb_files_helper(
195
195
gyb_exec : str ,
196
196
add_source_locations : bool ,
197
197
verbose : bool ,
198
- ):
198
+ ) -> None :
199
199
temp_files_dir = tempfile .gettempdir ()
200
200
make_dir_if_needed (temp_files_dir )
201
201
@@ -207,7 +207,7 @@ def generate_gyb_files_helper(
207
207
clear_gyb_files_from_previous_run (
208
208
sources_dir , destination_dir , verbose )
209
209
210
- def generate_gyb_file (gyb_file ) :
210
+ def generate_gyb_file (gyb_file : str ) -> None :
211
211
gyb_file_path = os .path .join (sources_dir , gyb_file )
212
212
213
213
# Slice off the '.gyb' to get the name for the output file
@@ -242,7 +242,7 @@ def generate_syntax_node_template_gyb_files(
242
242
gyb_exec : str ,
243
243
add_source_locations : bool ,
244
244
verbose : bool
245
- ):
245
+ ) -> None :
246
246
temp_files_dir = tempfile .gettempdir ()
247
247
make_dir_if_needed (temp_files_dir )
248
248
@@ -286,7 +286,7 @@ def generate_gyb_files(
286
286
swiftsyntaxbuilder_destination : Optional [str ] = None ,
287
287
swiftsyntaxparser_destination : Optional [str ] = None ,
288
288
swiftsyntaxbuildergenerator_destination : Optional [str ] = None
289
- ):
289
+ ) -> None :
290
290
print ("** Generating gyb Files **" )
291
291
292
292
check_gyb_exec (gyb_exec )
@@ -333,7 +333,7 @@ def generate_gyb_files(
333
333
def run_code_generation (
334
334
toolchain : str , build_dir : Optional [str ], multiroot_data_file : Optional [str ],
335
335
release : bool , verbose : bool , swiftsyntaxbuilder_destination : str
336
- ):
336
+ ) -> None :
337
337
print ("** Running code generation **" )
338
338
swiftpm_call = get_swiftpm_invocation (
339
339
toolchain = toolchain ,
@@ -359,7 +359,7 @@ def run_code_generation(
359
359
check_call (swiftpm_call , env = env , verbose = verbose )
360
360
361
361
362
- def make_dir_if_needed (path ) :
362
+ def make_dir_if_needed (path : str ) -> None :
363
363
if not os .path .exists (path ):
364
364
os .makedirs (path )
365
365
@@ -368,7 +368,7 @@ def make_dir_if_needed(path):
368
368
# corresponding `.gyb` file in the `Sources` directory.
369
369
def clear_gyb_files_from_previous_run (
370
370
sources_dir : str , destination_dir : str , verbose : bool
371
- ):
371
+ ) -> None :
372
372
for previous_gyb_gen_file in os .listdir (destination_dir ):
373
373
if previous_gyb_gen_file .endswith (".swift" ):
374
374
gyb_file = os .path .join (
@@ -419,7 +419,7 @@ def __init__(
419
419
release : bool ,
420
420
verbose : bool ,
421
421
disable_sandbox : bool = False ,
422
- ):
422
+ ) -> None :
423
423
self .swiftpm_call = get_swiftpm_invocation (
424
424
toolchain = toolchain ,
425
425
action = "build" ,
@@ -434,7 +434,7 @@ def __init__(
434
434
self .verbose = verbose
435
435
self .toolchain = toolchain
436
436
437
- def build (self , product_name : str ):
437
+ def build (self , product_name : str ) -> None :
438
438
print ("** Building " + product_name + " **" )
439
439
command = list (self .swiftpm_call )
440
440
command .extend (["--product" , product_name ])
@@ -452,7 +452,7 @@ def build(self, product_name: str):
452
452
# Testing
453
453
454
454
455
- def verify_generated_files (gyb_exec : str , verbose : bool ):
455
+ def verify_generated_files (gyb_exec : str , verbose : bool ) -> None :
456
456
user_swiftsyntax_generated_dir = os .path .join (
457
457
SWIFTSYNTAX_DIR , "gyb_generated"
458
458
)
@@ -502,7 +502,7 @@ def verify_generated_files(gyb_exec: str, verbose: bool):
502
502
def verify_code_generated_files (
503
503
toolchain : str , build_dir : Optional [str ], multiroot_data_file : Optional [str ],
504
504
release : bool , verbose : bool
505
- ):
505
+ ) -> None :
506
506
user_swiftsyntaxbuilder_generated_dir = os .path .join (
507
507
SWIFTSYNTAXBUILDER_DIR , "generated"
508
508
)
@@ -532,7 +532,8 @@ def verify_code_generated_files(
532
532
)
533
533
534
534
535
- def check_generated_files_match (self_generated_dir : str , user_generated_dir : str ):
535
+ def check_generated_files_match (self_generated_dir : str ,
536
+ user_generated_dir : str ) -> None :
536
537
command = [
537
538
"diff" ,
538
539
"--recursive" ,
@@ -545,7 +546,7 @@ def check_generated_files_match(self_generated_dir: str, user_generated_dir: str
545
546
check_call (command )
546
547
547
548
548
- def verify_c_syntax_nodes_match ():
549
+ def verify_c_syntax_nodes_match () -> None :
549
550
print ("** Validating that the C data types match **" )
550
551
551
552
swift_syntax_c_definitions = os .path .join (
@@ -564,7 +565,7 @@ def verify_c_syntax_nodes_match():
564
565
def run_tests (
565
566
toolchain : str , build_dir : Optional [str ], multiroot_data_file : Optional [str ],
566
567
release : bool , filecheck_exec : Optional [str ], skip_lit_tests : bool , verbose : bool
567
- ):
568
+ ) -> None :
568
569
print ("** Running SwiftSyntax Tests **" )
569
570
570
571
if not skip_lit_tests :
@@ -588,7 +589,7 @@ def run_tests(
588
589
# Lit Tests
589
590
590
591
591
- def check_lit_exec ():
592
+ def check_lit_exec () -> None :
592
593
if not os .path .exists (LIT_EXEC ):
593
594
fatal_error (
594
595
"""
@@ -602,7 +603,7 @@ def check_lit_exec():
602
603
)
603
604
604
605
605
- def check_incr_transfer_roundtrip_exec ():
606
+ def check_incr_transfer_roundtrip_exec () -> None :
606
607
if not os .path .exists (INCR_TRANSFER_ROUNDTRIP_EXEC ):
607
608
fatal_error (
608
609
"""
@@ -633,7 +634,7 @@ def find_lit_test_helper_exec(
633
634
634
635
635
636
def run_lit_tests (toolchain : str , build_dir : Optional [str ], release : bool ,
636
- filecheck_exec : Optional [str ], verbose : bool ):
637
+ filecheck_exec : Optional [str ], verbose : bool ) -> None :
637
638
print ("** Running lit-based tests **" )
638
639
639
640
check_lit_exec ()
@@ -667,7 +668,8 @@ def run_lit_tests(toolchain: str, build_dir: Optional[str], release: bool,
667
668
668
669
669
670
def run_xctests (toolchain : str , build_dir : Optional [str ],
670
- multiroot_data_file : Optional [str ], release : bool , verbose : bool ):
671
+ multiroot_data_file : Optional [str ], release : bool ,
672
+ verbose : bool ) -> None :
671
673
print ("** Running XCTests **" )
672
674
swiftpm_call = get_swiftpm_invocation (
673
675
toolchain = toolchain ,
@@ -694,11 +696,11 @@ def run_xctests(toolchain: str, build_dir: Optional[str],
694
696
# Arugment Parsing functions
695
697
696
698
697
- def generate_xcodeproj (args ) :
699
+ def generate_xcodeproj (args : argparse . Namespace ) -> None :
698
700
xcode_gen (config = args .xcconfig_path )
699
701
700
702
701
- def generate_source_code_command (args ) :
703
+ def generate_source_code_command (args : argparse . Namespace ) -> None :
702
704
try :
703
705
generate_gyb_files (
704
706
args .gyb_exec ,
@@ -724,7 +726,7 @@ def generate_source_code_command(args):
724
726
"Source generation using SwiftSyntaxBuilder failed" , e )
725
727
726
728
727
- def verify_source_code_command (args ) :
729
+ def verify_source_code_command (args : argparse . Namespace ) -> None :
728
730
try :
729
731
verify_generated_files (args .gyb_exec , verbose = args .verbose )
730
732
@@ -749,7 +751,7 @@ def verify_source_code_command(args):
749
751
raise SystemExit (1 )
750
752
751
753
752
- def build_command (args ) :
754
+ def build_command (args : argparse . Namespace ) -> None :
753
755
try :
754
756
builder = Builder (
755
757
toolchain = args .toolchain ,
@@ -769,7 +771,7 @@ def build_command(args):
769
771
fail_for_called_process_error ("Building SwiftSyntax failed" , e )
770
772
771
773
772
- def test_command (args ) :
774
+ def test_command (args : argparse . Namespace ) -> None :
773
775
try :
774
776
builder = Builder (
775
777
toolchain = args .toolchain ,
@@ -819,8 +821,8 @@ def test_command(args):
819
821
"""
820
822
821
823
822
- def parse_args ():
823
- def add_default_build_arguments (parser ) :
824
+ def parse_args () -> argparse . Namespace :
825
+ def add_default_build_arguments (parser : argparse . ArgumentParser ) -> None :
824
826
parser .add_argument (
825
827
"-r" , "--release" , action = "store_true" , help = "Build in release mode."
826
828
)
@@ -956,7 +958,7 @@ def add_default_build_arguments(parser):
956
958
# -----------------------------------------------------------------------------
957
959
958
960
959
- def main ():
961
+ def main () -> None :
960
962
args = parse_args ()
961
963
args .func (args )
962
964
0 commit comments