| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #-------------------------------------------------------------------------------------------------------
- # Copyright (C) Microsoft. All rights reserved.
- # Copyright (c) ChakraCore Project Contributors. 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' Copyright \(c\)( 2022)? ChakraCore Project 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
- ]
- pal_copyright_lines = [
- r'-------------------------------------------------------------------------------------------------------',
- r' ChakraCore/Pal',
- r' Contains portions \(c\) copyright Microsoft, portions copyright \(c\) the \.NET Foundation and Contributors',
- r' and edits \(c\) copyright the ChakraCore Contributors\.',
- r' See THIRD-PARTY-NOTICES\.txt in the project root for \.NET Foundation license',
- 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
- ]
- 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)
- regexes = []
- if file_name[:4] == "pal/":
- for line in pal_copyright_lines:
- pattern = '^.{1,5}%s$' % line
- regexes.append(re.compile(pattern))
- else:
- for line in copyright_lines:
- pattern = '^.{1,5}%s$' % line
- regexes.append(re.compile(pattern))
- def report_incorrect(file_name, pairs, fail_line):
- # found a problem so report the problem to the caller and exit
- print(file_name, "... does not contain a correct copyright notice.\n")
- # print the relevant lines to help the reader find the problem
- for (_, line) in pairs:
- print(" ", line, end="")
- print()
- if (fail_line != ""):
- print("Match failed at line:")
- print(" ", fail_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, line)
- 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)
|