summaryrefslogtreecommitdiff
path: root/misc/scripts
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-01-04 23:50:32 +0100
committerRémi Verschelde <rverschelde@gmail.com>2018-01-05 01:22:22 +0100
commiteb892cd0f123244446e14fe0c1f40981116c4d37 (patch)
tree08d05ae03c32c2283970568c6c049a36b7523d92 /misc/scripts
parent3f9f0b3dbb534518999d6b10c8e0ee68c1e27793 (diff)
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
Diffstat (limited to 'misc/scripts')
-rw-r--r--misc/scripts/fix_headers.py (renamed from misc/scripts/addheader.py)63
1 files changed, 46 insertions, 17 deletions
diff --git a/misc/scripts/addheader.py b/misc/scripts/fix_headers.py
index 58d9fa35a3..809820c20f 100644
--- a/misc/scripts/addheader.py
+++ b/misc/scripts/fix_headers.py
@@ -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"
+
+ # 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).
+
+ 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()
- while (l != ""):
- if ((l.find("//") != 0 and l.find("/*") != 0 and l.strip() != "") or bc):
- text += l
- bc = True
- l = fr.readline()
+ # Write
+ fileread = open(fname.strip(), "wb")
+ fileread.write(text)
+ fileread.close()
- fr.close()
- fr = open(fname.strip(), "wb")
- fr.write(text)
- fr.close()
- # print(text)
- fname = f.readline()
+ # Next file
+ fname = files.readline()