mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 00:50:22 +00:00
Meta: Rewrite the check-newlines-at-eof script in python
The bash version takes around 15 seconds to run; that is way too slow. This python3 version should take less than one second to run. :^) Also, the script will now also check .py files and .txt CMake files.
This commit is contained in:
parent
7dc52e04fe
commit
6abba493b2
Notes:
sideshowbarker
2024-07-19 00:08:07 +09:00
Author: https://github.com/emanuele6 Commit: https://github.com/SerenityOS/serenity/commit/6abba493b29 Pull-request: https://github.com/SerenityOS/serenity/pull/4771 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/linusg ✅
3 changed files with 63 additions and 43 deletions
62
Meta/check-newlines-at-eof.py
Executable file
62
Meta/check-newlines-at-eof.py
Executable file
|
@ -0,0 +1,62 @@
|
|||
#!/bin/python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
os.chdir(os.path.dirname(__file__) + "/..")
|
||||
|
||||
files = subprocess.run(
|
||||
[
|
||||
"git", "ls-files", "--",
|
||||
"*.cpp",
|
||||
"*.h",
|
||||
"*.gml",
|
||||
"*.html",
|
||||
"*.js",
|
||||
"*.css",
|
||||
"*.sh",
|
||||
"*.py",
|
||||
"CMake*.txt",
|
||||
"**/CMake*.txt",
|
||||
":!:Base",
|
||||
":!:Kernel/FileSystem/ext2_fs.h",
|
||||
":!:Libraries/LibC/getopt.cpp",
|
||||
":!:Libraries/LibCore/puff.h",
|
||||
":!:Libraries/LibCore/puff.cpp",
|
||||
":!:Libraries/LibELF/exec_elf.h"
|
||||
],
|
||||
capture_output=True
|
||||
).stdout.decode().strip('\n').split('\n')
|
||||
|
||||
no_newline_at_eof_errors = []
|
||||
blank_lines_at_eof_errors = []
|
||||
|
||||
did_fail = False
|
||||
for filename in files:
|
||||
with open(filename, "r") as f:
|
||||
f.seek(0, os.SEEK_END)
|
||||
|
||||
f.seek(f.tell() - 1, os.SEEK_SET)
|
||||
if f.read(1) != '\n':
|
||||
did_fail = True
|
||||
no_newline_at_eof_errors.append(filename)
|
||||
continue
|
||||
|
||||
while True:
|
||||
f.seek(f.tell() - 2, os.SEEK_SET)
|
||||
char = f.read(1)
|
||||
if not char.isspace():
|
||||
break
|
||||
if char == '\n':
|
||||
did_fail = True
|
||||
blank_lines_at_eof_errors.append(filename)
|
||||
break
|
||||
|
||||
if no_newline_at_eof_errors:
|
||||
print("Files with no newline at the end:", " ".join(no_newline_at_eof_errors))
|
||||
if blank_lines_at_eof_errors:
|
||||
print("Files that have blank lines at the end:", " ".join(blank_lines_at_eof_errors))
|
||||
|
||||
if did_fail:
|
||||
sys.exit(1)
|
|
@ -1,42 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
|
||||
cd "$script_path/.." || exit 1
|
||||
|
||||
MISSING_NEWLINE_AT_EOF_ERRORS=()
|
||||
MORE_THAN_ONE_NEWLINE_AT_EOF_ERRORS=()
|
||||
|
||||
while IFS= read -r f; do
|
||||
[ -s "$f" ] || continue
|
||||
|
||||
if [ "$(tail -n 1 "$f" | wc -l)" != 1 ]; then
|
||||
MISSING_NEWLINE_AT_EOF_ERRORS+=( "$f" )
|
||||
elif [[ "$(tail -n 1 "$f")" =~ ^[[:space:]]*$ ]]; then
|
||||
MORE_THAN_ONE_NEWLINE_AT_EOF_ERRORS+=( "$f" )
|
||||
fi
|
||||
done < <(git ls-files -- \
|
||||
'*.cpp' \
|
||||
'*.h' \
|
||||
'*.gml' \
|
||||
'*.html' \
|
||||
'*.js' \
|
||||
'*.css' \
|
||||
'*.sh' \
|
||||
':!:Base' \
|
||||
':!:Kernel/FileSystem/ext2_fs.h' \
|
||||
':!:Libraries/LibC/getopt.cpp' \
|
||||
':!:Libraries/LibCore/puff.h' \
|
||||
':!:Libraries/LibCore/puff.cpp' \
|
||||
':!:Libraries/LibELF/exec_elf.h' \
|
||||
)
|
||||
|
||||
exit_status=0
|
||||
if (( ${#MISSING_NEWLINE_AT_EOF_ERRORS[@]} )); then
|
||||
echo "Files with no newline at the end: ${MISSING_NEWLINE_AT_EOF_ERRORS[*]}"
|
||||
exit_status=1
|
||||
fi
|
||||
if (( ${#MORE_THAN_ONE_NEWLINE_AT_EOF_ERRORS[@]} )); then
|
||||
echo "Files that have blank lines at the end: ${MORE_THAN_ONE_NEWLINE_AT_EOF_ERRORS[*]}"
|
||||
exit_status=1
|
||||
fi
|
||||
exit "$exit_status"
|
|
@ -16,7 +16,7 @@ set +e
|
|||
for cmd in \
|
||||
Meta/check-ak-test-files.sh \
|
||||
Meta/check-debug-flags.sh \
|
||||
Meta/check-newlines-at-eof.sh \
|
||||
Meta/check-newlines-at-eof.py \
|
||||
Meta/check-style.sh \
|
||||
Meta/lint-executable-resources.sh \
|
||||
Meta/lint-ipc-ids.sh \
|
||||
|
|
Loading…
Reference in a new issue