IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 3ce2f076 authored by Hans Dembinski's avatar Hans Dembinski
Browse files

Merge branch 'better_do_clang_format' into 'master'

Better do clang format

See merge request !160
parents 1fb968af f93e505c
No related branches found
No related tags found
1 merge request!160Better do clang format
Pipeline #959 failed
......@@ -114,8 +114,8 @@ endif ()
# add call to ./do-copyright.py to run as unit-test-case
add_test (NAME copyright_notices COMMAND ./do-copyright.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# add call to do-clang-format.sh checking to run as unit-test-case
add_test (NAME clang_format COMMAND ./do-clang-format.sh check WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# add call to do-clang-format.py checking to run as unit-test-case
add_test (NAME clang_format COMMAND ./do-clang-format.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
if (WITH_PYTHIA)
find_package (Pythia8) # optional
......
#!/usr/bin/env python3
"""
Run clang-format with the style file in the CORSIKA repository.
By default it finds new files and files with modifications with respect to the current master and prints the filenames which need clang-formatting. Returns 1 if there are files which need modifications and 0 otherwise, so it can be used as a test.
"""
import argparse
import subprocess as subp
import os
import sys
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--apply', action="store_true",
help="Apply clang-format to files which need changes.")
parser.add_argument("--all", action="store_true",
help="Check all files below current path instead of new/modified.")
args = parser.parse_args()
filelist = []
if args.all:
for dirpath, dirnames, filenames in os.walk("."):
if "ThirdParty" in dirpath:
continue
for f in filenames:
if f.endswith(".h") or f.endswith(".cc"):
filename = os.path.join(dirpath, f)
if not os.path.islink(filename):
filelist.append(filename)
if not filelist:
raise SystemExit("Error: You specified --all, but file list is empty. "
"Did you run from the build directory?")
else:
cmd = "git diff master --name-status"
for line in subp.check_output(cmd, shell=True).decode("utf8").strip().split("\n"):
if line.startswith("D"): continue
filelist.append(line[1:].lstrip())
cmd = "git ls-files --exclude-standard --others"
filelist += subp.check_output(cmd, shell=True).decode("utf8").strip().split("\n")
filelist = [x for x in filelist
if "ThirdParty" not in x and (x.endswith(".h") or x.endswith(".cc"))]
cmd = "clang-format -style=file"
if args.apply:
for filename in filelist:
subp.check_call(cmd.split() + ["-i", filename])
else:
# only print files which need formatting
files_need_formatting = 0
for filename in filelist:
a = open(filename, "rb").read()
b = subp.check_output(cmd.split() + [filename])
if a != b:
files_need_formatting += 1
print(filename)
sys.exit(1 if files_need_formatting > 0 else 0)
#!/bin/bash
command="clang-format -style=file `find . -iregex '^.*\.\(cc\|h\)$' -not -path './ThirdParty/*'`"
if [ "$1" == "check" ];
then
`! ${command} -output-replacements-xml | grep -qc "<replacement "` || \
{ echo "format-check FAILED!"; exit 1; }
echo "Congratulations: format-check succeeded"
elif [ "$1" == "apply" ];
then
${command} -i
else
echo "please use: ./do-clang-format.sh [check] or [apply]"
fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment