Make sanitize script a suitable pre-commit hook

pull/5157/head
murgatroid99 9 years ago
parent a72a49044b
commit f656f189e4
  1. 9
      tools/distrib/check_copyright.py
  2. 2
      tools/distrib/clang_format_code.sh
  3. 24
      tools/distrib/sanitize.sh
  4. 6
      tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh

@ -57,6 +57,9 @@ argp.add_argument('-a', '--ancient',
argp.add_argument('-f', '--fix',
default=False,
action='store_true');
argp.add_argument('--precommit',
default=False,
action='store_true')
args = argp.parse_args()
# open the license text
@ -101,6 +104,10 @@ RE_LICENSE = dict(
for line in LICENSE))
for k, v in LICENSE_PREFIX.iteritems())
if args.precommit:
FILE_LIST_COMMAND = 'git diff --name-only HEAD | grep -v ^third_party/'
else:
FILE_LIST_COMMAND = 'git ls-tree -r --name-only -r HEAD | grep -v ^third_party/'
def load(name):
with open(name) as f:
@ -124,7 +131,7 @@ def log(cond, why, filename):
# scan files, validate the text
ok = True
for filename in subprocess.check_output('git ls-tree -r --name-only -r HEAD | grep -v ^third_party/',
for filename in subprocess.check_output(FILE_LIST_COMMAND,
shell=True).splitlines():
if filename in KNOWN_BAD: continue
ext = os.path.splitext(filename)[1]

@ -37,4 +37,4 @@ cd $(dirname $0)/../..
docker build -t grpc_clang_format tools/dockerfile/grpc_clang_format
# run clang-format against the checked out codebase
docker run -e TEST=$TEST --rm=true -v ${HOST_GIT_ROOT:-`pwd`}:/local-code -t grpc_clang_format /clang_format_all_the_things.sh
docker run -e TEST=$TEST -e CHANGED_FILES="$CHANGED_FILES" --rm=true -v ${HOST_GIT_ROOT:-`pwd`}:/local-code -t grpc_clang_format /clang_format_all_the_things.sh

@ -32,7 +32,23 @@ set -ex
cd $(dirname $0)/../..
./tools/buildgen/generate_projects.sh
./tools/distrib/clang_format_code.sh
./tools/distrib/check_copyright.py --fix
./tools/distrib/check_trailing_newlines.sh
DIFF_COMMAND="git diff --name-only HEAD | grep -v ^third_party/"
if [ "x$1" == 'x--pre-commit' ]; then
if eval $DIFF_COMMAND | grep '^build.yaml$'; then
./tools/buildgen/generate_projects.sh
else
templates=$(eval $DIFF_COMMAND | grep '\.template$' || true)
if [ -n "$templates" ]; then
./tools/buildgen/generate_projects.sh --templates $templates
fi
fi
CHANGED_FILES=$(eval $DIFF_COMMAND) ./tools/distrib/clang_format_code.sh
./tools/distrib/check_copyright.py --fix --precommit
./tools/distrib/check_trailing_newlines.sh
else
./tools/buildgen/generate_projects.sh
./tools/distrib/clang_format_code.sh
./tools/distrib/check_copyright.py --fix
./tools/distrib/check_trailing_newlines.sh
fi

@ -48,6 +48,12 @@ do
done
done
# The CHANGED_FILES variable is used to restrict the set of files to check.
# Here we set files to the intersection of files and CHANGED_FILES
if [ -n "$CHANGED_FILES" ]; then
files=$(comm -12 <(echo $files | tr ' ' '\n' | sort -u) <(echo $CHANGED_FILES | tr ' ' '\n' | sort -u))
fi
if [ "x$TEST" = "x" ]
then
echo $files | xargs $CLANG_FORMAT -i

Loading…
Cancel
Save