add_source_file: styling changes for readability (#10011)

This commit is contained in:
Bradley Williams 2025-03-15 16:30:57 -04:00 committed by GitHub
parent 07ef83131a
commit 85c00bb161
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -24,7 +24,6 @@ This only supports files inside the "src" directory.
""" """
import argparse import argparse
import sys
import inspect import inspect
import pathlib import pathlib
@ -38,13 +37,12 @@ except:
))) )))
exit(1) exit(1)
#=========#
# Globals # # Globals #
#=========#
# Either the executable directory or the current working directory # Either the executable directory or the current working directory
# should be the wesnoth root directory # should be the wesnoth root directory
rootdir = pathlib.Path(inspect.getsourcefile(lambda:0)) rootdir = pathlib.Path(inspect.getsourcefile(lambda: 0))
if not rootdir.joinpath("projectfiles").exists(): if not rootdir.joinpath("projectfiles").exists():
rootdir = pathlib.Path() rootdir = pathlib.Path()
if not rootdir.joinpath("projectfiles").exists(): if not rootdir.joinpath("projectfiles").exists():
@ -77,9 +75,8 @@ code_blocks_target_translations = {
"tests": "tests", "tests": "tests",
} }
#=======#
# XCode # # XCode #
#=======#
def modify_xcode(filename, targets, remove): def modify_xcode(filename, targets, remove):
"""Add the given file to the specified targets. """Add the given file to the specified targets.
@ -121,7 +118,7 @@ def modify_xcode(filename, targets, remove):
raise Exception(f"problem finding '{d}' group in '{groupname}'") raise Exception(f"problem finding '{d}' group in '{groupname}'")
parent_group = found_groups[0] parent_group = found_groups[0]
if remove : if remove:
# Remove from all targets if we want to remove # Remove from all targets if we want to remove
for file in project.get_files_by_name(filename.name, parent=parent_group): for file in project.get_files_by_name(filename.name, parent=parent_group):
project.remove_file_by_id(file.get_id()) project.remove_file_by_id(file.get_id())
@ -139,19 +136,19 @@ def modify_xcode(filename, targets, remove):
# a different place will block addition of the new file. # a different place will block addition of the new file.
# the rest is just to match existing project file structure. # the rest is just to match existing project file structure.
project.add_file(filename.name, project.add_file(filename.name,
force=True, force=True,
tree="<group>", tree="<group>",
parent=parent_group, parent=parent_group,
target_name=translated_targets, target_name=translated_targets,
) )
# that's done, save the file # that's done, save the file
project.save() project.save()
return return
#==============#
# source_lists # # source_lists #
#==============#
def modify_source_list(filename, source_list, remove): def modify_source_list(filename, source_list, remove):
source_list_file = rootdir.joinpath("source_lists", source_list) source_list_file = rootdir.joinpath("source_lists", source_list)
@ -163,7 +160,8 @@ def modify_source_list(filename, source_list, remove):
return return
if remove: if remove:
if file_line in sl_lines: sl_lines.remove(file_line) if file_line in sl_lines:
sl_lines.remove(file_line)
else: else:
# if the target already has an entry with the same filename, loudly skip # if the target already has an entry with the same filename, loudly skip
if file_line in sl_lines: if file_line in sl_lines:
@ -175,20 +173,22 @@ def modify_source_list(filename, source_list, remove):
sl_lines.sort() sl_lines.sort()
open(source_list_file, 'w').writelines(sl_lines) open(source_list_file, 'w').writelines(sl_lines)
def add_to_source_lists(filename, targets): def add_to_source_lists(filename, targets):
translated_targets = [source_list_target_translations[t] for t in targets] translated_targets = [source_list_target_translations[t] for t in targets]
print(" source_list targets:", translated_targets) print(" source_list targets:", translated_targets)
for t in translated_targets: for t in translated_targets:
modify_source_list(filename, t, False) modify_source_list(filename, t, False)
def remove_from_source_lists(filename): def remove_from_source_lists(filename):
# remove from all tagerts if -r was specified. # remove from all tagerts if -r was specified.
for t in source_list_target_translations.values(): for t in source_list_target_translations.values():
modify_source_list(filename, t, True) modify_source_list(filename, t, True)
#==============#
# Code::Blocks # # Code::Blocks #
#==============#
def modify_code_blocks_target(filename, target, remove): def modify_code_blocks_target(filename, target, remove):
cbp_file = rootdir.joinpath( cbp_file = rootdir.joinpath(
@ -205,7 +205,8 @@ def modify_code_blocks_target(filename, target, remove):
elem = f"\t\t<Unit filename=\"{filename_for_cbp}\" />\n" elem = f"\t\t<Unit filename=\"{filename_for_cbp}\" />\n"
if remove: if remove:
if elem in cbp_lines: cbp_lines.remove(elem) if elem in cbp_lines:
cbp_lines.remove(elem)
else: else:
# if the target already has an entry with the same filename, loudly skip # if the target already has an entry with the same filename, loudly skip
if elem in cbp_lines: if elem in cbp_lines:
@ -226,12 +227,14 @@ def modify_code_blocks_target(filename, target, remove):
open(cbp_file, 'w').writelines(cbp_lines) open(cbp_file, 'w').writelines(cbp_lines)
def modify_code_blocks(filename, targets, remove): def modify_code_blocks(filename, targets, remove):
translated_targets = code_blocks_target_translations.values() if remove else [code_blocks_target_translations[t] for t in targets] translated_targets = code_blocks_target_translations.values() if remove else [code_blocks_target_translations[t] for t in targets]
print(" code::blocks targets:", translated_targets) print(" code::blocks targets:", translated_targets)
for t in translated_targets: for t in translated_targets:
modify_code_blocks_target(filename, t, remove) modify_code_blocks_target(filename, t, remove)
def sanity_check_existing_cpp_hpp(filenames): def sanity_check_existing_cpp_hpp(filenames):
""" """
If we're adding a .cpp file, check whether a .hpp should be added too, etc. If we're adding a .cpp file, check whether a .hpp should be added too, etc.
@ -264,6 +267,7 @@ def sanity_check_existing_cpp_hpp(filenames):
print("ERROR: Not making changes, as checks failed and --no-checks option was not used.") print("ERROR: Not making changes, as checks failed and --no-checks option was not used.")
exit(1) exit(1)
def canonicalise_filenames(original_filenames): def canonicalise_filenames(original_filenames):
""" """
The script supports giving the filenames with or without the "src/" prefix. The script supports giving the filenames with or without the "src/" prefix.
@ -288,22 +292,22 @@ def canonicalise_filenames(original_filenames):
return filenames return filenames
#======#
# main # # main #
#======#
if __name__ == "__main__": if __name__ == "__main__":
ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
# a file argument is mandatory # a file argument is mandatory
ap.add_argument("filename", action="store", nargs="+", ap.add_argument("filename", action="store", nargs="+",
help="the .cpp and .hpp files to add") help="the .cpp and .hpp files to add")
ap.add_argument("--target", action="store", nargs=1, ap.add_argument("--target", action="store", nargs=1,
default=["wesnoth"], default=["wesnoth"],
help="which build targets to add the file to") help="which build targets to add the file to")
ap.add_argument("--no-checks", action="store_true", ap.add_argument("--no-checks", action="store_true",
help="do not check whether the files exist, etc") help="do not check whether the files exist, etc")
ap.add_argument("-r", "--remove", action="store_true", ap.add_argument("-r", "--remove", action="store_true",
help="remove the specified files from projectfiles instead of adding them, --target is then ignored") help="remove the specified files from projectfiles instead of adding them, --target is then ignored")
# By default, recognise --help too # By default, recognise --help too
options = ap.parse_args() options = ap.parse_args()