| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #-------------------------------------------------------------------------------------------------------
- # 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
- ]
- 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 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)
|