feat(code-style): Add a script to automatically format all changed files
If executed inside the repository it will run the default Contiki uncrustify script on all changed .c and .h file. This could be added as a Git pre-commit hook. See http://git-scm.com/book/en/Customizing-Git-Git-Hooks
This commit is contained in:
parent
583a1fe9db
commit
b25ef28ade
37
tools/code-style/uncrustify-changed.sh
Executable file
37
tools/code-style/uncrustify-changed.sh
Executable file
@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This file checks your git index and runs indent on every changed *.c and *.h
|
||||
# file.
|
||||
#
|
||||
# Author: Valentin Sawadski <valentin@sawadski.eu>
|
||||
|
||||
# Exit if any called command exits nonzero
|
||||
set -e
|
||||
|
||||
# Determine the repository root as the path returned by porcelain always
|
||||
# start there
|
||||
GIT_REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
|
||||
|
||||
# This is the format command that will be run.
|
||||
FORMAT_COMMAND=$GIT_REPOSITORY_ROOT/tools/code-style/uncrustify-fix-style.sh
|
||||
|
||||
# Parse all the files we get from git.
|
||||
RAW_FILES=$(git status --porcelain)
|
||||
# Set \n to be the field separator
|
||||
IFS=$'\n'
|
||||
# This splits the input by newline
|
||||
GIT_FILES_BY_LINE=( $RAW_FILES )
|
||||
|
||||
# Now go throug them once more and remove the GIT status logs.
|
||||
# Count the amount of C and H files we have to format.
|
||||
IFS=$' '
|
||||
for i in "${!GIT_FILES_BY_LINE[@]}"; do
|
||||
LINE_BY_SPACE=( ${GIT_FILES_BY_LINE[i]} )
|
||||
FILE=${LINE_BY_SPACE[1]}
|
||||
|
||||
if [[ ${FILE: -2} = ".c" || ${FILE: -2} = ".h" ]]; then
|
||||
# echo Formatting File: $FILE
|
||||
$FORMAT_COMMAND $GIT_REPOSITORY_ROOT/$FILE
|
||||
fi
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user