format_all.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env bash
  2. # Format all source files in the project.
  3. #
  4. # Set CLANG_FORMAT_CMD environment variable to specify executable used (default: `clang-format`).
  5. set -e
  6. ################################################################################
  7. # Configuration
  8. # folders to search
  9. FOLDERS="
  10. include
  11. internal
  12. examples
  13. "
  14. # paths to ignore
  15. EXCLUDE_PATHS="
  16. internal/ceres/gtest/*
  17. internal/ceres/gmock/*
  18. internal/ceres/gmock_gtest_all.cc
  19. internal/ceres/gmock_main.cc
  20. internal/ceres/generated/*
  21. internal/ceres/generated_bundle_adjustment_tests/*
  22. internal/ceres/schur_eliminator.cc
  23. internal/ceres/partitioned_matrix_view.cc
  24. internal/ceres/schur_templates.cc
  25. "
  26. ################################################################################
  27. # Implementation
  28. # directory of this script and the repository root
  29. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
  30. REPO_DIR="$SCRIPT_DIR/.."
  31. # set default for CLANG_FORMAT_CMD
  32. CLANG_FORMAT_CMD=${CLANG_FORMAT_CMD:-clang-format}
  33. echo "Formatting with $CLANG_FORMAT_CMD (`$CLANG_FORMAT_CMD --version`)"
  34. # prepare arguments to exclude ignored paths
  35. EXCLUDE_ARGS=""
  36. for p in $EXCLUDE_PATHS; do
  37. EXCLUDE_ARGS="-not -path */$p $EXCLUDE_ARGS"
  38. done
  39. # for each folder, format header and source dirs
  40. for d in $FOLDERS; do
  41. d="$REPO_DIR/$d"
  42. find "$d" \( -name "*.h" -or -name "*.cc" \) $EXCLUDE_ARGS | xargs $CLANG_FORMAT_CMD -verbose -i
  43. done