Skip to content
Snippets Groups Projects
Select Git revision
  • fcc8fb5785e66675151758c5be9f239e58ae3b94
  • master default protected
  • release/beta-qt-202301101210
  • stable
  • release/beta-qt-202211182015
  • release/beta-qt-202211181752
  • release/beta-qt-202211171508
  • release/beta-qt-202211081754
  • release/beta-qt-202211071518
  • release/beta-qt-202210270957
  • release/beta-qt-202210071648
  • release/beta-qt-202209291549
  • release/beta-qt-202209011129
  • release/beta-qt-202208261640
  • release/beta-qt-202208241511
  • release/beta-qt-202208231849
  • release/beta-qt-202208091525
  • release/beta-qt-202207191241
  • release/beta-qt-202207181708
  • release/beta-qt-202207131914
  • release/beta-qt-202207131513
  • android/release_358
  • android/release_357
  • android/release_356
  • android/release_355
  • android/release_354
  • 20221220.0956.79e1207
  • android/release_353
  • android/release_352
  • android/release_350
  • android/release_349
  • android/release_348
  • android/release_347
  • 20221031.1308.130cc26
  • android/release_346
  • android/release_345
  • android/release_344
  • android/release_343
  • android/release_342
  • android/release_341
  • android/release_340
41 results

format.sh

Blame
  • Tobias Hildebrandt's avatar
    Tobias Hildebrandt authored
    ignore files that contain a C++ extension somewhere in their filename
    but end with a different extension
    
    Change-Id: Icbac5ace9d6e0eb4f7386751cb565e16045f97f4
    fcc8fb57
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    format.sh 1.71 KiB
    #!/usr/bin/env bash
    
    set -e
    
    command_exists ()
    {
        type "$1" &> /dev/null ;
    }
    
    CFVERSION="9"
    CLANGFORMAT=""
    if command_exists clang-format-${CFVERSION}; then
        CLANGFORMAT=clang-format-${CFVERSION}
    else
        if command_exists clang-format; then
            CLANGFORMAT=clang-format
        fi
    fi
    
    if ! command -v $CLANGFORMAT &> /dev/null; then
        echo "Required version of clang-format not found"
        exit 1
    fi
    
    format_file()
    {
        if [ -f "${1}" ]; then
            $CLANGFORMAT -i -style=file "${1}" || true
        fi
    }
    
    format_files()
    {
        for file in $1; do
            echo -ne "Formatting: ${file}\\033[0K\\r"
            format_file "${file}"
        done
    }
    
    exit_if_no_files()
    {
        echo No files to format
        exit 0
    }
    
    install_hook()
    {
        hooks_path=$1
        if [ ! -d "$hooks_path" ]; then
            echo "$hooks_path" path does not exist
            exit 1
        fi
        echo Installing pre-commit hook in "$hooks_path"
        echo "$(realpath $0)" > "$hooks_path"/pre-commit
        chmod +x "$hooks_path"/pre-commit
    }
    
    display_help()
    {
        echo "Usage: $0 [OPTION...] -- Clang format source files with a .clang-format file" >&2
        echo
        echo "   --all             format all files instead of only committed ones"
        echo "   --install <path>  install a pre-commit hook to run this script"
        echo
    }
    
    if [ "$1" == "--help" ]; then
        display_help
        exit 0
    fi
    
    case "${1}" in
      --all )
        files=$(find src -regex '.*\.\(cpp\|hpp\|cc\|cxx\|h\)$') || true
        echo Formatting all source files...
        format_files "$files"
        ;;
      --install )
        install_hook "${2}"
        ;;
      * )
        files=$(git diff-index --cached --name-only HEAD | grep -iE '\.(cpp|cxx|cc|h|hpp)$') || exit_if_no_files
        echo Formatting committed source files...
        format_files "$files"
        ;;
    esac