1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Pre-commit: Fix copyright_headers.py to run on all relevant files

It was only running on the first file passed by pre-commit, instead of all.
Fixes compatibility with Windows paths to get the basename.
This commit is contained in:
Rémi Verschelde
2024-03-12 15:07:09 +01:00
parent 89f70e98d2
commit e520359147
2 changed files with 51 additions and 47 deletions

View File

@@ -39,10 +39,10 @@ repos:
entry: python3 misc/scripts/copyright_headers.py entry: python3 misc/scripts/copyright_headers.py
exclude: | exclude: |
(?x)^( (?x)^(
tests/python_build.*|
.*thirdparty.*| .*thirdparty.*|
.*platform/android/java/lib/src/com.*|
.*-so_wrap.*| .*-so_wrap.*|
core/math/bvh_.*\.inc$|
platform/android/java/lib/src/com.*|
platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView.*| platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView.*|
platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper.*| platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper.*|
platform/android/java/lib/src/org/godotengine/godot/utils/ProcessPhoenix.* platform/android/java/lib/src/org/godotengine/godot/utils/ProcessPhoenix.*

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os
import sys import sys
header = """\ header = """\
@@ -35,37 +36,40 @@ header = """\
/**************************************************************************/ /**************************************************************************/
""" """
fname = sys.argv[1] if len(sys.argv) < 2:
print("Invalid usage of copyright_headers.py, it should be called with a path to one or multiple files.")
sys.exit(1)
# Handle replacing $filename with actual filename and keep alignment for f in sys.argv[1:]:
fsingle = fname.strip() fname = f
if fsingle.find("/") != -1:
fsingle = fsingle[fsingle.rfind("/") + 1 :] # Handle replacing $filename with actual filename and keep alignment
rep_fl = "$filename" fsingle = os.path.basename(fname.strip())
rep_fi = fsingle rep_fl = "$filename"
len_fl = len(rep_fl) rep_fi = fsingle
len_fi = len(rep_fi) len_fl = len(rep_fl)
# Pad with spaces to keep alignment len_fi = len(rep_fi)
if len_fi < len_fl: # Pad with spaces to keep alignment
if len_fi < len_fl:
for x in range(len_fl - len_fi): for x in range(len_fl - len_fi):
rep_fi += " " rep_fi += " "
elif len_fl < len_fi: elif len_fl < len_fi:
for x in range(len_fi - len_fl): for x in range(len_fi - len_fl):
rep_fl += " " rep_fl += " "
if header.find(rep_fl) != -1: if header.find(rep_fl) != -1:
text = header.replace(rep_fl, rep_fi) text = header.replace(rep_fl, rep_fi)
else: else:
text = header.replace("$filename", fsingle) text = header.replace("$filename", fsingle)
text += "\n" text += "\n"
# We now have the proper header, so we want to ignore the one in the original file # We now have the proper header, so we want to ignore the one in the original file
# and potentially empty lines and badly formatted lines, while keeping comments that # and potentially empty lines and badly formatted lines, while keeping comments that
# come after the header, and then keep everything non-header unchanged. # come after the header, and then keep everything non-header unchanged.
# To do so, we skip empty lines that may be at the top in a first pass. # To do so, we skip empty lines that may be at the top in a first pass.
# In a second pass, we skip all consecutive comment lines starting with "/*", # In a second pass, we skip all consecutive comment lines starting with "/*",
# then we can append the rest (step 2). # then we can append the rest (step 2).
with open(fname.strip(), "r") as fileread: with open(fname.strip(), "r") as fileread:
line = fileread.readline() line = fileread.readline()
header_done = False header_done = False
@@ -87,6 +91,6 @@ with open(fname.strip(), "r") as fileread:
text += line text += line
line = fileread.readline() line = fileread.readline()
# Write # Write
with open(fname.strip(), "w", encoding="utf-8", newline="\n") as filewrite: with open(fname.strip(), "w", encoding="utf-8", newline="\n") as filewrite:
filewrite.write(text) filewrite.write(text)