|  | #!/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 |