mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 09:14:58 +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)
|
Loading…
Add table
Add a link
Reference in a new issue