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