Improve script to add/fix copyright headers

- The header now always ends with exactly one empty line
- Comments after the header are no longer removed
- Improved readability with clearer file names and comments
This commit is contained in:
Rémi Verschelde 2018-01-04 23:50:32 +01:00
parent 3f9f0b3dbb
commit eb892cd0f1

View file

@ -1,3 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
header = """\ header = """\
/*************************************************************************/ /*************************************************************************/
/* $filename */ /* $filename */
@ -30,22 +33,21 @@ header = """\
/*************************************************************************/ /*************************************************************************/
""" """
f = open("files", "rb") files = open("files", "rb")
fname = files.readline()
fname = f.readline()
while (fname != ""): while (fname != ""):
fr = open(fname.strip(), "rb") # Handle replacing $filename with actual filename and keep alignment
l = fr.readline()
bc = False
fsingle = fname.strip() fsingle = fname.strip()
if (fsingle.find("/") != -1): if (fsingle.find("/") != -1):
fsingle = fsingle[fsingle.rfind("/") + 1:] fsingle = fsingle[fsingle.rfind("/") + 1:]
rep_fl = "$filename" rep_fl = "$filename"
rep_fi = fsingle rep_fi = fsingle
len_fl = len(rep_fl) len_fl = len(rep_fl)
len_fi = len(rep_fi) len_fi = len(rep_fi)
# Pad with spaces to keep alignment
if (len_fi < len_fl): if (len_fi < len_fl):
for x in range(len_fl - len_fi): for x in range(len_fl - len_fi):
rep_fi += " " rep_fi += " "
@ -56,16 +58,43 @@ while (fname != ""):
text = header.replace(rep_fl, rep_fi) text = header.replace(rep_fl, rep_fi)
else: else:
text = header.replace("$filename", fsingle) text = header.replace("$filename", fsingle)
text += "\n"
while (l != ""): # We now have the proper header, so we want to ignore the one in the original file
if ((l.find("//") != 0 and l.find("/*") != 0 and l.strip() != "") or bc): # and potentially empty lines and badly formatted lines, while keeping comments that
text += l # come after the header, and then keep everything non-header unchanged.
bc = True # To do so, we skip empty lines that may be at the top in a first pass.
l = fr.readline() # In a second pass, we skip all consecutive comment lines starting with "/*",
# then we can append the rest (step 2).
fr.close() fileread = open(fname.strip(), "rb")
fr = open(fname.strip(), "wb") line = fileread.readline()
fr.write(text) header_done = False
fr.close()
# print(text) while (line.strip() == ""): # Skip empty lines at the top
fname = f.readline() line = fileread.readline()
if (line.find("/**********") == -1): # Godot header starts this way
# Maybe starting with a non-Godot comment, abort header magic
header_done = True
while (not header_done): # Handle header now
if (line.find("/*") != 0): # No more starting with a comment
header_done = True
if (line.strip() != ""):
text += line
line = fileread.readline()
while (line != ""): # Dump everything until EOF
text += line
line = fileread.readline()
fileread.close()
# Write
fileread = open(fname.strip(), "wb")
fileread.write(text)
fileread.close()
# Next file
fname = files.readline()