#!/usr/bin/env python3 # # This script renames SDL headers in the specfied paths import argparse import pathlib import re def main(): replacements = [ ( re.compile(r"(?:[\"<])(?:SDL2/)?SDL_gamecontroller.h(?:[\">])"), r"" ), ( re.compile(r"(?:[\"<])(?:SDL2/)?begin_code.h(?:[\">])"), r"" ), ( re.compile(r"(?:[\"<])(?:SDL2/)?close_code.h(?:[\">])"), r"" ), ( re.compile(r"(?:[\"<])(?:SDL2/)?(SDL[_a-z0-9]*\.h)(?:[\">])"), r"" ) ] for entry in args.args: path = pathlib.Path(entry) if not path.exists(): print("%s doesn't exist, skipping" % entry) continue replace_headers_in_path(path, replacements) def replace_headers_in_file(file, replacements): try: with file.open("r", encoding="UTF-8", newline="") as rfp: original = rfp.read() contents = original for regex, replacement in replacements: contents = regex.sub(replacement, contents) if contents != original: with file.open("w", encoding="UTF-8", newline="") as wfp: wfp.write(contents) except UnicodeDecodeError: print("%s is not text, skipping" % file) except Exception as err: print("%s" % err) def replace_headers_in_dir(path, replacements): for entry in path.glob("*"): if entry.is_dir(): replace_headers_in_dir(entry, replacements) else: print("Processing %s" % entry) replace_headers_in_file(entry, replacements) def replace_headers_in_path(path, replacements): if path.is_dir(): replace_headers_in_dir(path, replacements) else: replace_headers_in_file(path, replacements) if __name__ == "__main__": parser = argparse.ArgumentParser(fromfile_prefix_chars='@') parser.add_argument("args", nargs="*") args = parser.parse_args() try: main() except Exception as e: print(e) exit(-1) exit(0)