Skip to content

Commit 99b3bd7

Browse files
committed
Add more type annotation to build-script.py
1 parent 2d197b2 commit 99b3bd7

File tree

1 file changed

+42
-40
lines changed

1 file changed

+42
-40
lines changed

build-script.py

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
def fail_for_called_process_error(
4949
succinct_description: str,
5050
error: subprocess.CalledProcessError
51-
):
51+
) -> None:
5252
printerr(f"FAIL: {succinct_description}")
5353
printerr(f"Executing: {escapeCmd(error.cmd)}")
5454
printerr(error.output)
@@ -59,7 +59,7 @@ def fail_for_called_process_error(
5959
# Xcode Projects Generation
6060

6161

62-
def xcode_gen(config: str):
62+
def xcode_gen(config: str) -> None:
6363
print("** Generate SwiftSyntax as an Xcode project **")
6464
os.chdir(PACKAGE_DIR)
6565
swiftpm_call = ["swift", "package", "generate-xcodeproj"]
@@ -72,16 +72,16 @@ def xcode_gen(config: str):
7272
# Helpers
7373

7474

75-
def printerr(message: str):
75+
def printerr(message: str) -> None:
7676
print(message, file=sys.stderr)
7777

7878

79-
def note(message: str):
79+
def note(message: str) -> None:
8080
print("--- %s: note: %s" % (os.path.basename(sys.argv[0]), message))
8181
sys.stdout.flush()
8282

8383

84-
def fatal_error(message: str):
84+
def fatal_error(message: str) -> None:
8585
printerr(message)
8686
raise SystemExit(1)
8787

@@ -97,8 +97,9 @@ def escapeCmd(cmd: List[str]) -> str:
9797
return " ".join([escapeCmdArg(arg) for arg in cmd])
9898

9999

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:
102103
if verbose:
103104
print(escapeCmd(cmd))
104105
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,
108109

109110

110111
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:
112113
if verbose:
113114
print(escapeCmd(cmd))
114115
subprocess.check_call(cmd, cwd=cwd, env=env, stderr=subprocess.STDOUT)
@@ -124,7 +125,7 @@ def realpath(path: Optional[str]) -> Optional[str]:
124125
# Generating gyb Files
125126

126127

127-
def check_gyb_exec(gyb_exec: str):
128+
def check_gyb_exec(gyb_exec: str) -> None:
128129
if not os.path.exists(gyb_exec):
129130
fatal_error(
130131
"""
@@ -139,10 +140,9 @@ def check_gyb_exec(gyb_exec: str):
139140
)
140141

141142

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.")
146146

147147

148148
def generate_single_gyb_file(
@@ -154,7 +154,7 @@ def generate_single_gyb_file(
154154
add_source_locations: bool,
155155
additional_gyb_flags: List[str],
156156
verbose: bool,
157-
):
157+
) -> None:
158158
# Source locations are added by default by gyb, and cleared by passing
159159
# `--line-directive=` (nothing following the `=`) to the generator. Our
160160
# flag is the reverse; we don't want them by default, only if requested.
@@ -195,7 +195,7 @@ def generate_gyb_files_helper(
195195
gyb_exec: str,
196196
add_source_locations: bool,
197197
verbose: bool,
198-
):
198+
) -> None:
199199
temp_files_dir = tempfile.gettempdir()
200200
make_dir_if_needed(temp_files_dir)
201201

@@ -207,7 +207,7 @@ def generate_gyb_files_helper(
207207
clear_gyb_files_from_previous_run(
208208
sources_dir, destination_dir, verbose)
209209

210-
def generate_gyb_file(gyb_file):
210+
def generate_gyb_file(gyb_file: str) -> None:
211211
gyb_file_path = os.path.join(sources_dir, gyb_file)
212212

213213
# Slice off the '.gyb' to get the name for the output file
@@ -242,7 +242,7 @@ def generate_syntax_node_template_gyb_files(
242242
gyb_exec: str,
243243
add_source_locations: bool,
244244
verbose: bool
245-
):
245+
) -> None:
246246
temp_files_dir = tempfile.gettempdir()
247247
make_dir_if_needed(temp_files_dir)
248248

@@ -286,7 +286,7 @@ def generate_gyb_files(
286286
swiftsyntaxbuilder_destination: Optional[str] = None,
287287
swiftsyntaxparser_destination: Optional[str] = None,
288288
swiftsyntaxbuildergenerator_destination: Optional[str] = None
289-
):
289+
) -> None:
290290
print("** Generating gyb Files **")
291291

292292
check_gyb_exec(gyb_exec)
@@ -333,7 +333,7 @@ def generate_gyb_files(
333333
def run_code_generation(
334334
toolchain: str, build_dir: Optional[str], multiroot_data_file: Optional[str],
335335
release: bool, verbose: bool, swiftsyntaxbuilder_destination: str
336-
):
336+
) -> None:
337337
print("** Running code generation **")
338338
swiftpm_call = get_swiftpm_invocation(
339339
toolchain=toolchain,
@@ -359,7 +359,7 @@ def run_code_generation(
359359
check_call(swiftpm_call, env=env, verbose=verbose)
360360

361361

362-
def make_dir_if_needed(path):
362+
def make_dir_if_needed(path: str) -> None:
363363
if not os.path.exists(path):
364364
os.makedirs(path)
365365

@@ -368,7 +368,7 @@ def make_dir_if_needed(path):
368368
# corresponding `.gyb` file in the `Sources` directory.
369369
def clear_gyb_files_from_previous_run(
370370
sources_dir: str, destination_dir: str, verbose: bool
371-
):
371+
) -> None:
372372
for previous_gyb_gen_file in os.listdir(destination_dir):
373373
if previous_gyb_gen_file.endswith(".swift"):
374374
gyb_file = os.path.join(
@@ -419,7 +419,7 @@ def __init__(
419419
release: bool,
420420
verbose: bool,
421421
disable_sandbox: bool = False,
422-
):
422+
) -> None:
423423
self.swiftpm_call = get_swiftpm_invocation(
424424
toolchain=toolchain,
425425
action="build",
@@ -434,7 +434,7 @@ def __init__(
434434
self.verbose = verbose
435435
self.toolchain = toolchain
436436

437-
def build(self, product_name: str):
437+
def build(self, product_name: str) -> None:
438438
print("** Building " + product_name + " **")
439439
command = list(self.swiftpm_call)
440440
command.extend(["--product", product_name])
@@ -452,7 +452,7 @@ def build(self, product_name: str):
452452
# Testing
453453

454454

455-
def verify_generated_files(gyb_exec: str, verbose: bool):
455+
def verify_generated_files(gyb_exec: str, verbose: bool) -> None:
456456
user_swiftsyntax_generated_dir = os.path.join(
457457
SWIFTSYNTAX_DIR, "gyb_generated"
458458
)
@@ -502,7 +502,7 @@ def verify_generated_files(gyb_exec: str, verbose: bool):
502502
def verify_code_generated_files(
503503
toolchain: str, build_dir: Optional[str], multiroot_data_file: Optional[str],
504504
release: bool, verbose: bool
505-
):
505+
) -> None:
506506
user_swiftsyntaxbuilder_generated_dir = os.path.join(
507507
SWIFTSYNTAXBUILDER_DIR, "generated"
508508
)
@@ -532,7 +532,8 @@ def verify_code_generated_files(
532532
)
533533

534534

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:
536537
command = [
537538
"diff",
538539
"--recursive",
@@ -545,7 +546,7 @@ def check_generated_files_match(self_generated_dir: str, user_generated_dir: str
545546
check_call(command)
546547

547548

548-
def verify_c_syntax_nodes_match():
549+
def verify_c_syntax_nodes_match() -> None:
549550
print("** Validating that the C data types match **")
550551

551552
swift_syntax_c_definitions = os.path.join(
@@ -564,7 +565,7 @@ def verify_c_syntax_nodes_match():
564565
def run_tests(
565566
toolchain: str, build_dir: Optional[str], multiroot_data_file: Optional[str],
566567
release: bool, filecheck_exec: Optional[str], skip_lit_tests: bool, verbose: bool
567-
):
568+
) -> None:
568569
print("** Running SwiftSyntax Tests **")
569570

570571
if not skip_lit_tests:
@@ -588,7 +589,7 @@ def run_tests(
588589
# Lit Tests
589590

590591

591-
def check_lit_exec():
592+
def check_lit_exec() -> None:
592593
if not os.path.exists(LIT_EXEC):
593594
fatal_error(
594595
"""
@@ -602,7 +603,7 @@ def check_lit_exec():
602603
)
603604

604605

605-
def check_incr_transfer_roundtrip_exec():
606+
def check_incr_transfer_roundtrip_exec() -> None:
606607
if not os.path.exists(INCR_TRANSFER_ROUNDTRIP_EXEC):
607608
fatal_error(
608609
"""
@@ -633,7 +634,7 @@ def find_lit_test_helper_exec(
633634

634635

635636
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:
637638
print("** Running lit-based tests **")
638639

639640
check_lit_exec()
@@ -667,7 +668,8 @@ def run_lit_tests(toolchain: str, build_dir: Optional[str], release: bool,
667668

668669

669670
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:
671673
print("** Running XCTests **")
672674
swiftpm_call = get_swiftpm_invocation(
673675
toolchain=toolchain,
@@ -694,11 +696,11 @@ def run_xctests(toolchain: str, build_dir: Optional[str],
694696
# Arugment Parsing functions
695697

696698

697-
def generate_xcodeproj(args):
699+
def generate_xcodeproj(args: argparse.Namespace) -> None:
698700
xcode_gen(config=args.xcconfig_path)
699701

700702

701-
def generate_source_code_command(args):
703+
def generate_source_code_command(args: argparse.Namespace) -> None:
702704
try:
703705
generate_gyb_files(
704706
args.gyb_exec,
@@ -724,7 +726,7 @@ def generate_source_code_command(args):
724726
"Source generation using SwiftSyntaxBuilder failed", e)
725727

726728

727-
def verify_source_code_command(args):
729+
def verify_source_code_command(args: argparse.Namespace) -> None:
728730
try:
729731
verify_generated_files(args.gyb_exec, verbose=args.verbose)
730732

@@ -749,7 +751,7 @@ def verify_source_code_command(args):
749751
raise SystemExit(1)
750752

751753

752-
def build_command(args):
754+
def build_command(args: argparse.Namespace) -> None:
753755
try:
754756
builder = Builder(
755757
toolchain=args.toolchain,
@@ -769,7 +771,7 @@ def build_command(args):
769771
fail_for_called_process_error("Building SwiftSyntax failed", e)
770772

771773

772-
def test_command(args):
774+
def test_command(args: argparse.Namespace) -> None:
773775
try:
774776
builder = Builder(
775777
toolchain=args.toolchain,
@@ -819,8 +821,8 @@ def test_command(args):
819821
"""
820822

821823

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:
824826
parser.add_argument(
825827
"-r", "--release", action="store_true", help="Build in release mode."
826828
)
@@ -956,7 +958,7 @@ def add_default_build_arguments(parser):
956958
# -----------------------------------------------------------------------------
957959

958960

959-
def main():
961+
def main() -> None:
960962
args = parse_args()
961963
args.func(args)
962964

0 commit comments

Comments
 (0)