mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-26 01:51:41 +00:00
Also added scripts for EOF newline management and for removing trailing whitespace. configure.bat was rewritten to use CRLF line endings. Documentation for the existing scripts was also improved.
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
# This task ensures that all source files have exactly one EOF newline.
|
|
|
|
import os
|
|
from task import Task
|
|
|
|
class Newline(Task):
|
|
def run(self, name):
|
|
newlines = 0
|
|
|
|
# Remove all but one EOF newline, or append one if necessary
|
|
eol = os.linesep
|
|
if name.endswith("bat"):
|
|
eol = "\r\n"
|
|
with open(name, "r+", newline = eol) as file:
|
|
# Get file size
|
|
file.seek(0, os.SEEK_END)
|
|
size = file.tell()
|
|
|
|
# Seek to last character in file
|
|
file.seek(size - 1)
|
|
|
|
# While last character is a newline
|
|
while file.read(1) == "\n":
|
|
newlines = newlines + 1
|
|
|
|
# Seek to character before newline
|
|
file.seek(size - 1 - len(eol) * newlines)
|
|
|
|
if newlines < 1:
|
|
# Append newline to end of file
|
|
file.seek(size)
|
|
file.write("\n")
|
|
elif newlines > 1:
|
|
# Truncate all but one newline
|
|
file.truncate(size - len(eol) * (newlines - 1))
|