Files
Custom-Operating-System/utils/codeassistant/include_guards_fix.py

64 lines
1.4 KiB
Python

#!/usr/bin/env python
# Launch the script from root of the project to have the correct paths
import os
import sys
from os import fdopen, remove
walk_dir = sys.argv[1]
print('walk_dir = ' + walk_dir)
print('walk_dir (absolute) = ' + os.path.abspath(walk_dir))
all_includes = []
def is_guard(line):
if line.startswith("#ifndef _"):
return True
return False
def get_guard(line):
return line[8:-1]
def new_guard(line, path):
gen = path.split('/')
gen = list(filter(lambda a: a != "libs", gen))
gen = list(filter(lambda a: a != "include", gen))
line = "_"
for l in gen:
line += l + "_"
line = line.replace(".", "_")
line = line.replace("-", "_")
line = line.upper()
return line[:-1]
def fix_guards(file):
print("prc ", file)
data = []
guard = None
with open(file) as old_file:
for line in old_file:
data.append(line)
if is_guard(line) and guard is None:
guard = get_guard(line)
if guard is None:
return
ng = new_guard(guard, file)
with open(file, 'w') as new_file:
for i in data:
i = i.replace(guard, ng)
new_file.write(i)
for root, subdirs, files in os.walk(walk_dir):
for x in files:
if x.endswith(".h") or x.endswith(".hpp") or root.find("/libcxx/include") != -1:
fix_guards(os.path.join(root, x))