canary/docs/python-scripts/remove_player_includes.py

79 lines
2.6 KiB
Python
Raw Permalink Normal View History

import os
import re
import argparse
# List of includes to remove
includes_to_remove = [
'#include "creatures/players/wheel/player_wheel.hpp"',
'#include "creatures/players/vip/player_vip.hpp"',
'#include "creatures/players/achievement/player_achievement.hpp"',
'#include "creatures/players/cyclopedia/player_badge.hpp"',
'#include "creatures/players/cyclopedia/player_cyclopedia.hpp"',
'#include "creatures/players/cyclopedia/player_title.hpp"',
'#include "creatures/players/wheel/wheel_gems.hpp"',
]
# List of method calls to update from '->' to '.'
methods_to_update = [
'wheel',
'vip',
'achiev',
'badge',
'title',
'cyclopedia'
'm_wheelPlayer'
]
def remove_includes(content):
for include in includes_to_remove:
# Remove the specific include statement
include_pattern = r'^' + re.escape(include) + r'\s*\n'
content = re.sub(include_pattern, '', content, flags=re.MULTILINE)
# Remove only the blank lines below the removed include
content = re.sub(r'(' + re.escape(include) + r'\s*\n)\n+', r'\1', content)
return content
def update_method_calls(content):
for method in methods_to_update:
# Replace 'method()->' with 'method().' for each method in the list
pattern = rf'\b{method}\(\)->'
replacement = f'{method}().'
content = re.sub(pattern, replacement, content)
return content
def process_files(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
# Apply the include removal
modified_content = remove_includes(content)
# Apply the method call update
modified_content = update_method_calls(modified_content)
# Save the modified file if changes were made
if content != modified_content:
with open(file_path, 'w', encoding='utf-8') as file:
file.write(modified_content)
print(f'Modifications applied to: {file_path}')
else:
print(f'No modifications needed for: {file_path}')
def main(directory):
# Traverse the specified folder and find all .hpp and .cpp files
for root, _, files in os.walk(directory):
for file in files:
if file.endswith(('.cpp', '.hpp')):
file_path = os.path.join(root, file)
process_files(file_path)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Remove specific includes and update method calls in .cpp and .hpp files.')
parser.add_argument('directory', type=str, nargs='?', default='../../src/', help='Path of the directory to be scanned.')
args = parser.parse_args()
main(args.directory)