mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-10-26 12:27:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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"<SDL3/SDL_gamepad.h>" ),
 | |
|         ( re.compile(r"(?:[\"<])(?:SDL2/)?begin_code.h(?:[\">])"), r"<SDL3/SDL_begin_code.h>" ),
 | |
|         ( re.compile(r"(?:[\"<])(?:SDL2/)?close_code.h(?:[\">])"), r"<SDL3/SDL_close_code.h>" ),
 | |
|         ( re.compile(r"(?:[\"<])(?:SDL2/)?(SDL[_a-z0-9]*\.h)(?:[\">])"), r"<SDL3/\1>" )
 | |
|     ]
 | |
|     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)
 | |
| 
 | 
