Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: add pre-commit hook to remove trailing whitespaces #73

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Nov 14, 2023

  1. ci: add pre-commit hook to remove trailing whitespaces

    \### Goal
    
    - reduce the tedious chore of removing trailing whitespaces
    - ref. joelparkerhenderson#69 (comment)
    
    \### Descriptions
    
    - add pre-commit hook to remove trailing whitespaces
    - flow
      - collect the staged files
      - check if any of these files have whitespace issues
      - if so, cleanup process
        - loop through the files and apply git-stripspace
    
    \### Requirements
    
    - `git config core.hooksPath .githooks` to activate the hook
    - `git config core.quotepath false` for non-ascii paths
      - also need to be documented(where?)
    
    \### Test
    - trailing spaces in following diff are cleaned up
      - works on all type of file even for codes, not only for markdowns(docs)
    ```diff
    diff --git a/.githooks/pre-commit b/.githooks/pre-commit
    new file mode 100644
    index 0000000..4d25c49
    --- /dev/null
    +++ b/.githooks/pre-commit
    @@ -0,0 +1,37 @@
    +#!/bin/sh
    +
    +# Temporary file to store the list of files that need cleanup
    +TEMP_FILE=$(mktemp)
    +
    +# Collect staged files with potential whitespace issues
    +git diff --cached --name-only --diff-filter=ACM > "$TEMP_FILE"
    +
    +# Check if any of these files have whitespace issues
    +NEEDS_CLEANUP=false
    +while read -r FILE; do
    +  if ! git diff --cached --check -- "$FILE"; then
    +    NEEDS_CLEANUP=true
    +    break
    +  fi
    +done < "$TEMP_FILE"
    +
    +# Cleanup process
    +if [ "$NEEDS_CLEANUP" = true ]; then
    +  # Loop through the files and apply git-stripspace
    +  while read -r FILE; do
    +    git show ":$FILE" | git stripspace > "$FILE"
    +    git add "$FILE"
    +  done < "$TEMP_FILE"
    +
    +  # Inform the user
    +  echo 'Cleanup trailing whitespaces is done'
    +fi
    +
    +# Clean up - remove the temporary file
    +rm "$TEMP_FILE"
    +
    +if [ "$NEEDS_CLEANUP" = false ]; then
    +  echo "no need to cleanup"
    +fi
    +# Continue with the original commit
    +exit 0
    diff --git "a/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md" "b/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md"
    index f4c35a5..bdbed75 100644
    --- "a/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md"
    +++ "b/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md"
    @@ -5,7 +5,7 @@ EdgeX Foundry의 ADR 템플릿입니다.
     출처: https://docs.edgexfoundry.org/2.3/design/adr/template/
    
    -### 제출자
    +### 제출자
    
     ADR 제출자를 나열합니다.
    
    ```
    
    Signed-off-by: flavono123 <flavono123@gmail.com>
    flavono123 committed Nov 14, 2023
    Configuration menu
    Copy the full SHA
    c3aa9cb View commit details
    Browse the repository at this point in the history