diff options
Diffstat (limited to 'BuildTools/Copyrighter.py')
-rwxr-xr-x | BuildTools/Copyrighter.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/BuildTools/Copyrighter.py b/BuildTools/Copyrighter.py new file mode 100755 index 0000000..189dcf5 --- /dev/null +++ b/BuildTools/Copyrighter.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python +#coding=utf-8 + +import os, re, datetime + +TEMPLATE = """/* + * Copyright (c) %(year)s %(author)s. + * See the included COPYING file for license details. + */ + +""" + +def updateCopyright(fileName) : + file = open(fileName) + fileData = "" + + author = "" + startYear = "" + endYear = "" + previousCopyright = "" + + # Retrieve previous copyright information + header = "" + inHeader = False + inSpaceBelowHeader = False + lines = file.readlines() + lines2 = lines + for line in lines2 : + lines.pop(0) + if inSpaceBelowHeader : + if line.strip() != "" : + break + elif inHeader : + if line.startswith(" */") : + inSpaceBelowHeader = True + else : + header += line + else : + if line.strip() == "" : + continue + elif line.startswith("/*") : + inHeader = True + header += line + else : + fileData += line + break + if "Copyright" in header : + previousCopyright = header + m = re.match("\* Copyright \(c\) (?P<startYear>\d\d\d\d)(-(?P<endYear>\d\d\d\d))? (?P<author>.*)", header) + if m : + author = m.group("author") + startYear = m.group("startYear") + endYear = m.group("endYear") + elif header != "" : + fileData = header + file.close() + + # Read in the rest of the data + fileData += "".join(lines) + + # Guess empty values + if author == "" : + if "Swift/" in fileName : + author = "Kevin Smith" + else : + author = u"Remko Tronçon" + if startYear == "" : + startYear = datetime.date.today().strftime("%Y") + elif endYear == "" : + ## TODO: Guess end year by looking at git log --pretty=format:%ai -- <filename> + pass + + # Generate a copyright + year = startYear + "-" + endYear if len(endYear) > 0 else startYear + copyright = TEMPLATE % { + "author" : author, + "year" : year + } + + # Write the copyright to the file + if copyright.encode("utf-8") != previousCopyright : + file = open(fileName, "w") + file.write(copyright.encode("utf-8")) + file.write(fileData) + file.close() + +for (path, dirs, files) in os.walk("Swiften/JID") : + if "3rdParty" in path : + continue + for filename in files : + if not filename.endswith(".cpp") and not filename.endswith(".h") : + continue + if filename.startswith("moc_") : + continue + fullFilename = path + "/" + filename + updateCopyright(fullFilename) |