From 23598a3c67a68ccf563f28ad071deb0ef4ace3c6 Mon Sep 17 00:00:00 2001 From: David Fugate <dfugate@microsoft.com> Date: Thu, 1 Mar 2012 11:06:50 -0800 Subject: [PATCH] Renamed AddLicenseHeader.py to FixLicenseHeader.py. Modified it to switch us over to the Ecma license for everything except Sputnik-based sources (someone from Google should make this change on line 60 of FixLicenseHeader.py). --- ...ddLicenseHeader.py => FixLicenseHeader.py} | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) rename tools/misc/{AddLicenseHeader.py => FixLicenseHeader.py} (56%) diff --git a/tools/misc/AddLicenseHeader.py b/tools/misc/FixLicenseHeader.py similarity index 56% rename from tools/misc/AddLicenseHeader.py rename to tools/misc/FixLicenseHeader.py index 2608bb92d3..f5124c3004 100644 --- a/tools/misc/AddLicenseHeader.py +++ b/tools/misc/FixLicenseHeader.py @@ -9,27 +9,25 @@ import argparse import os import sys import re +import codecs #--Globals--------------------------------------------------------------------- -MSFT_LICENSE = '''/// Copyright (c) 2012 Ecma International. All rights reserved. +ECMA_LICENSE = '''/// Copyright (c) 2012 Ecma International. All rights reserved. /// Ecma International makes this code available under the terms and conditions set /// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the /// "Use Terms"). Any redistribution of this code must retain the above /// copyright and this notice and otherwise comply with the Use Terms. ''' -GOOGLE_LICENSE = '''// Copyright 2011 Google Inc. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -''' +NEW_LICENSE_FIRST_LINE = re.compile(r"Copyright\s+\(c\)\s+20[0-9][0-9]\s+Ecma\s+International") +OLD_LICENSE_FIRST_LINE = re.compile(r"(Copyright\s+20[0-9][0-9]\s+Google)|(the\s+Sputnik\s+authors)|(Microsoft\s+Corporation)") +OLD_LICENSE_LAST_LINE = re.compile(r"(ADVISED\s+OF\s+THE\s+POSSIBILITY\s+OF\s+SUCH\s+DAMAGE)|(This\s+code\s+is\s+governed\s+by\s+the\s+BSD\s+license\s+found\s+in\s+the\s+LICENSE\s+file)") +#Dirty way of determining if the contribution stems from Google or Microsoft GOOGLE_RE = re.compile(r"[\\/]S([0-9]+)|(bp)(\.|_)[^\\/]+\.js$") -GOOGLE_LINE_ONE = re.compile(r"(Copyright\s+20[0-9][0-9]\s+Google)|(the Sputnik authors)") - -IETC_RE = re.compile(r"[\\/][0-9]+\.[^\\/]+\.js$") -IETC_LINE_ONE = re.compile(r"Microsoft Corporation") - - +IETC_RE = re.compile(r"[\\/][0-9]+(\.|_)[^\\/]+\.js$") +DEBUG = False #------------------------------------------------------------------------------ def getAllJSFiles(dirName): ''' @@ -53,27 +51,45 @@ def handleFile(filePath): with open(filePath, "rb") as f: origLines = f.readlines() - #Figure out which license header we'll be using - if GOOGLE_RE.search(filePath)!=None: - licenseHeader = GOOGLE_LICENSE - lineOne = GOOGLE_LINE_ONE - elif IETC_RE.search(filePath)!=None: - licenseHeader = MSFT_LICENSE - lineOne = IETC_LINE_ONE - else: - print "*!!!*:\t", filePath - return - #See if it's already there - if lineOne.search(origLines[0])!=None: + if NEW_LICENSE_FIRST_LINE.search(origLines[0])!=None: + #print "\talready there:\t", filePath + return + #TODO: Google employee needs to remove this elif + # and fix the next elif clause + elif GOOGLE_RE.search(filePath)!=None: + if DEBUG: + print "\tignoring Google sources:\t", filePath return + elif (IETC_RE.search(filePath))==None: #and (GOOGLE_RE.search(filePath)==None): + errMsg = "\tno idea which license should be used for:\t" + filePath + raise Exception(errMsg) + return + + with codecs.open(filePath,'r','utf8') as f: + bomPresent = f.read(2).startswith(u"\ufeff") + if bomPresent: + print "\tnon-ASCII file detected. Please modify by hand:", filePath + return with open(filePath, "wb") as f: - print "MODIFIED:\t", filePath - f.write(licenseHeader) + if DEBUG: + print "\tmodified:\t", filePath + #TODO: this isn't good enough... + #if bomPresent: + # print "\tBOM was detected for:", filePath + # f.write(u"\ufeff") + f.write(ECMA_LICENSE) + writeIt = False for line in origLines: - f.write(line) + if writeIt: + f.write(line) + elif OLD_LICENSE_LAST_LINE.search(line)!=None: + writeIt = True + + if not writeIt: + print "\tError - didn't find end of the original license:\t", filePath #--Main------------------------------------------------------------------------ if __name__=="__main__": -- GitLab