mirror of
https://github.com/lifting-bits/remill
synced 2026-06-21 13:56:07 +00:00
99df2e19d4
* Running clang-format on files with some additional custom scripts for my style * Fix missing unique_ptr in remill/BC/Optimizer.h * Fixes and selective disabling of clang-format
59 lines
1.6 KiB
Bash
Executable File
59 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2020, Trail of Bits, Inc. All rights reserved.
|
|
|
|
# Get the list of changed C++ header and source files.
|
|
STAGED_FILES=$( git diff --cached --name-only --diff-filter=ACM | grep -e '\.\(h\)\|\(cpp\)$' )
|
|
|
|
if [[ "${STAGED_FILES}" = "" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
PYTHON3_EXE=$( which python3 )
|
|
if [[ "$?" == 1 ]]; then
|
|
echo "\t\033[41mPlease install python3\033[0m"
|
|
exit 1
|
|
fi
|
|
|
|
CLANG_FORMAT_EXE=$( which clang-format )
|
|
if [[ "$?" == 1 ]]; then
|
|
echo "\t\033[41mPlease install clang-format\033[0m"
|
|
exit 1
|
|
fi
|
|
|
|
THIS_FILE_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
|
NAME_OF_THIS_FILE_DIR=$( basename "${THIS_FILE_DIR}" )
|
|
IN_SCRIPTS_DIR=0
|
|
|
|
# This script being executed is located in the `scripts/` directory.
|
|
if [[ "${NAME_OF_THIS_FILE_DIR}" == "scripts" ]] ; then
|
|
SCRIPTS_DIR="${THIS_FILE_DIR}"
|
|
SOURCE_DIR=$( cd "$( dirname "${SCRIPTS_DIR}" )" && pwd )
|
|
IN_SCRIPTS_DIR=1
|
|
|
|
# This script being executed is located in the `.git/hooks` directory.
|
|
elif [[ "${NAME_OF_THIS_FILE_DIR}" == "hooks" ]] ; then
|
|
GIT_DIR=$( cd "$( dirname "${SCRIPTS_DIR}" )" && pwd )
|
|
SOURCE_DIR=$( cd "$( dirname "${GIT_DIR}" )" && pwd )
|
|
SCRIPTS_DIR="${SOURCE_DIR}/scripts"
|
|
|
|
# Not sure where this script is.
|
|
else
|
|
echo "\t\033[41mScript '${BASH_SOURCE[0]}' is in an unexpected location\033[0m"
|
|
echo 1
|
|
fi
|
|
|
|
# Run our wrapper of `clang-format` on the files that have changed.
|
|
${PYTHON3_EXE} "${SCRIPTS_DIR}/format-files" \
|
|
--source_dir "${SOURCE_DIR}" \
|
|
--format_exe "${CLANG_FORMAT_EXE}" \
|
|
--files ${STAGED_FILES} \
|
|
--check
|
|
|
|
if [[ "$?" == 0 ]] ; then
|
|
for staged_file in ${STAGED_FILES} ; do
|
|
git add "${staged_file}"
|
|
done
|
|
else
|
|
exit 1
|
|
fi
|