jerryscript/tools/check-license.py
Máté Tokodi bc408b159b
Modernize python and update pylint (#5096)
Update code to conform to the newer version of pylint available in
ubuntu-22.04, with few exceptions:
    - disabled `import-outside-toplevel` for `main()` in
      `jerry_client.py`
    - disabled `consider-using-with` for the logfile of `TestSuite` in
      `test262-harness.py` as using `with` is not practical in that case

Update test262-harness.py to use argparse instead of the now deprecated
optparse

Rename variables in jerry_client_main.py that redefined python builtins
or shadowed variables from an outer scope

Update python files to use f-stirngs

Add minimum python versions (3.6 and 3.8) to the CI jobs: without it the
default python version did not support the `with` statement for
`subprocess.Popen` used in `build.py` on macos, or in some cases f-stirngs

Remove `from __future__` imports that are no-ops in python 3

Remove shebang from non executable files

Re-enable most pylint checkers, except `missing-docstring`

JerryScript-DCO-1.0-Signed-off-by: Máté Tokodi mate.tokodi@szteszoftver.hu
2023-10-25 17:32:14 +02:00

90 lines
2.5 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright JS Foundation and other contributors, http://js.foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import io
import os
import re
import sys
import settings
LICENSE = re.compile(
r'((#|//|\*) Copyright .*\n'
r')+\s?\2\n'
r'\s?\2 Licensed under the Apache License, Version 2.0 \(the "License"\);\n'
r'\s?\2 you may not use this file except in compliance with the License.\n'
r'\s?\2 You may obtain a copy of the License at\n'
r'\s?\2\n'
r'\s?\2 http://www.apache.org/licenses/LICENSE-2.0\n'
r'\s?\2\n'
r'\s?\2 Unless required by applicable law or agreed to in writing, software\n'
r'\s?\2 distributed under the License is distributed on an "AS IS" BASIS\n'
r'\s?\2 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n'
r'\s?\2 See the License for the specific language governing permissions and\n'
r'\s?\2 limitations under the License.\n'
)
INCLUDE_DIRS = [
'cmake',
'jerry-core',
'jerry-ext',
'jerry-math',
'jerry-main',
'jerry-port',
'targets',
'tests',
'tools',
]
EXCLUDE_DIRS = [
'targets/esp8266',
os.path.relpath(settings.TEST262_TEST_SUITE_DIR, settings.PROJECT_DIR),
]
EXTENSIONS = [
'.c',
'.cpp',
'.h',
'.S',
'.js',
'.py',
'.sh',
'.tcl',
'.cmake',
]
def main():
is_ok = True
for dname in INCLUDE_DIRS:
for root, _, files in os.walk(dname):
if any(root.startswith(exclude) for exclude in EXCLUDE_DIRS):
continue
for fname in files:
if any(fname.endswith(ext) for ext in EXTENSIONS):
fpath = os.path.join(root, fname)
with io.open(fpath, 'r', errors='ignore', encoding='utf8') as curr_file:
if not LICENSE.search(curr_file.read()):
print(f'{fpath}: incorrect license')
is_ok = False
if not is_ok:
sys.exit(1)
if __name__ == '__main__':
main()