| #!/usr/bin/env bash |
| |
| # Format all source files in the project. |
| # |
| # Set CLANG_FORMAT_CMD environment variable to specify executable used (default: `clang-format`). |
| |
| set -e |
| |
| ################################################################################ |
| # Configuration |
| |
| # folders to search |
| FOLDERS=" |
| include |
| internal |
| examples |
| " |
| |
| # paths to ignore |
| EXCLUDE_PATHS=" |
| internal/ceres/gtest/* |
| internal/ceres/gmock/* |
| internal/ceres/gmock_gtest_all.cc |
| internal/ceres/gmock_main.cc |
| internal/ceres/generated/* |
| internal/ceres/generated_bundle_adjustment_tests/* |
| internal/ceres/schur_eliminator.cc |
| internal/ceres/partitioned_matrix_view.cc |
| internal/ceres/schur_templates.cc |
| " |
| |
| ################################################################################ |
| # Implementation |
| |
| # directory of this script and the repository root |
| SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" |
| REPO_DIR="$SCRIPT_DIR/.." |
| |
| # set default for CLANG_FORMAT_CMD |
| CLANG_FORMAT_CMD=${CLANG_FORMAT_CMD:-clang-format} |
| echo "Formatting with $CLANG_FORMAT_CMD (`$CLANG_FORMAT_CMD --version`)" |
| |
| # prepare arguments to exclude ignored paths |
| EXCLUDE_ARGS="" |
| for p in $EXCLUDE_PATHS; do |
| EXCLUDE_ARGS="-not -path */$p $EXCLUDE_ARGS" |
| done |
| |
| # for each folder, format header and source dirs |
| for d in $FOLDERS; do |
| d="$REPO_DIR/$d" |
| find "$d" \( -name "*.h" -or -name "*.cc" \) $EXCLUDE_ARGS | xargs $CLANG_FORMAT_CMD -verbose -i |
| done |