#------------------------------------------------------------------------------------------------------- # Copyright (C) Microsoft. All rights reserved. # Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. #------------------------------------------------------------------------------------------------------- # Python 2.7 and 3.x compatibility for easier testing regardless of python installation from __future__ import print_function import sys import os.path import re copyright_lines = [ r'-------------------------------------------------------------------------------------------------------', r' Copyright \(C\) Microsoft( Corporation and contributors)?\. All rights reserved\.', r' Licensed under the MIT license\. See LICENSE\.txt file in the project root for full license information\.', r'.*' # the above should always be followed by at least one other line, so make sure that line is present ] regexes = [] for line in copyright_lines: pattern = '^.{1,5}%s$' % line regexes.append(re.compile(pattern)) if len(sys.argv) < 2: print("Requires passing a filename as an argument.") exit(1) file_name = sys.argv[1] if not os.path.isfile(file_name): print("File does not exist:", file_name, "(not necessarily an error)") exit(0) def report_incorrect(file_name, pairs): # found a problem so report the problem to the caller and exit print(file_name, "... does not contain a correct Microsoft copyright notice.\n") # print the relevant lines to help the reader find the problem for (_, line) in pairs: print(" ", line, end="") print() linecount = 0 pairs = [] with open(file_name, 'r') as sourcefile: hashbang = sourcefile.readline() if not hashbang.startswith("#!"): sourcefile.seek(0) pairs += zip(regexes, sourcefile) for (regex, line) in pairs: linecount += 1 line = line.rstrip() matches = regex.match(line) if not matches: report_incorrect(file_name, pairs) exit(1) if linecount == 0: # the file was empty (e.g. dummy.js) so no problem exit(0) elif linecount != len(regexes): report_incorrect(file_name, pairs) exit(1)