mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:58:12 +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
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 \
|
for cmd in \
|
||||||
Meta/check-ak-test-files.sh \
|
Meta/check-ak-test-files.sh \
|
||||||
Meta/check-debug-flags.sh \
|
Meta/check-debug-flags.sh \
|
||||||
Meta/check-newlines-at-eof.sh \
|
Meta/check-newlines-at-eof.py \
|
||||||
Meta/check-style.sh \
|
Meta/check-style.sh \
|
||||||
Meta/lint-executable-resources.sh \
|
Meta/lint-executable-resources.sh \
|
||||||
Meta/lint-ipc-ids.sh \
|
Meta/lint-ipc-ids.sh \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue