Add script to install clang-format pre-commit hook and update VSCode settings
This commit is contained in:
62
scripts/install_clang_format_hook.sh
Executable file
62
scripts/install_clang_format_hook.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to print error messages in red
|
||||
print_error() {
|
||||
echo -e "\033[0;31mError: $1\033[0m"
|
||||
}
|
||||
|
||||
# Check if clang-format is available
|
||||
if ! command -v clang-format &> /dev/null
|
||||
then
|
||||
print_error "clang-format is not installed or not in your PATH. Please install it to use this pre-commit hook."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Define the pre-commit hook content
|
||||
HOOK_CONTENT='''#!/bin/bash
|
||||
|
||||
# Function to print error messages in red
|
||||
print_error() {
|
||||
echo -e "\033[0;31mError: $1\033[0m"
|
||||
}
|
||||
|
||||
# Check if clang-format is available
|
||||
if ! command -v clang-format &> /dev/null
|
||||
then
|
||||
print_error "clang-format is not installed or not in your PATH. Cannot format files."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get all staged C/C++/Objective-C/C++ files
|
||||
FILES_TO_FORMAT=$(git diff --cached --name-only --diff-filter=ACM | grep -E "\.(c|h|cpp|hpp|cc|hh|cxx|hxx|m|mm)$")
|
||||
|
||||
if [ -z "$FILES_TO_FORMAT" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for FILE in $FILES_TO_FORMAT
|
||||
do
|
||||
# Check if the file exists and is a regular file
|
||||
if [ -f "$FILE" ]; then
|
||||
# Format the file and check for changes
|
||||
clang-format -style=file -i "$FILE"
|
||||
if ! git diff --quiet "$FILE"; then
|
||||
git add "$FILE"
|
||||
echo "Formatted $FILE with clang-format."
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
'''
|
||||
|
||||
# Install the pre-commit hook
|
||||
HOOK_PATH=".git/hooks/pre-commit"
|
||||
|
||||
# Create the hooks directory if it doesn't exist
|
||||
mkdir -p .git/hooks
|
||||
|
||||
echo "$HOOK_CONTENT" > "$HOOK_PATH"
|
||||
chmod +x "$HOOK_PATH"
|
||||
|
||||
echo "Git pre-commit hook for clang-format installed successfully."
|
||||
Reference in New Issue
Block a user