#!/bin/bash

GIT_LS_FILES_FLAGS=""
if [[ "$1" == "-g" ]]; then
  GIT_LS_FILES_FLAGS="--modified"
fi

# --- Main Logic ---

# Format all files (or only modified files if -g is passed)

# Use 'git ls-files' to get a list of all files tracked by git:
# --modified: files tracked by git that have been modified (staged or unstaged)
# --exclude-standard: ignores files in .gitignore
# Additionally exclude files in 'lib/EpdFont/builtinFonts/' as they are script-generated.
# Also exclude files in 'lib/Epub/Epub/hyphenation/generated/' as they are script-generated.
git ls-files  --exclude-standard ${GIT_LS_FILES_FLAGS} \
    | grep -E '\.(c|cpp|h|hpp)$' \
    | grep -v -E '^lib/EpdFont/builtinFonts/' \
    | grep -v -E '^lib/Epub/Epub/hyphenation/generated/' \
    | xargs -r clang-format -style=file -i
