435af8b833
* Removed clang-tidy from hooks * Improved clang-format output * Remove lcp from types to format
48 lines
1.1 KiB
Python
Executable File
48 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import re
|
|
import sys
|
|
import subprocess
|
|
import difflib
|
|
|
|
|
|
def colorize(diff_lines):
|
|
def bold(s):
|
|
return '\x1b[1m' + s + '\x1b[0m'
|
|
|
|
def cyan(s):
|
|
return '\x1b[36m' + s + '\x1b[0m'
|
|
|
|
def green(s):
|
|
return '\x1b[32m' + s + '\x1b[0m'
|
|
|
|
def red(s):
|
|
return '\x1b[31m' + s + '\x1b[0m'
|
|
|
|
for line in diff_lines:
|
|
if line[:4] in ['--- ', '+++ ']:
|
|
yield bold(line)
|
|
elif line.startswith('@@ '):
|
|
yield cyan(line)
|
|
elif line.startswith('+'):
|
|
yield green(line)
|
|
elif line.startswith('-'):
|
|
yield red(line)
|
|
else:
|
|
yield line
|
|
|
|
|
|
proc = subprocess.Popen(
|
|
["clang-format", sys.argv[1]],
|
|
stdout=subprocess.PIPE, encoding='utf-8')
|
|
with open(sys.argv[1], 'r') as original:
|
|
diff_lines = list(
|
|
difflib.unified_diff(
|
|
original.readlines(),
|
|
proc.stdout.readlines(),
|
|
fromfile="unformatted",
|
|
tofile="formatted",
|
|
n=3))
|
|
|
|
sys.stdout.writelines(colorize(diff_lines))
|
|
sys.exit(1 if len(diff_lines) > 0 else 0)
|