Skip to content

Commit

Permalink
Adding a script to check for line endings (valid UNIX ending)
Browse files Browse the repository at this point in the history
-Created a bash script using grep to check for carriage return at line endings.
-Works for modified and new files only (if choosen)
-Modified build_and_run.sh to include the new check.sh and run it.
  • Loading branch information
kushalsingh007 committed Mar 8, 2015
1 parent 96e6d2a commit db97416
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
52 changes: 52 additions & 0 deletions dist/tools/endingcheck/check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash
#
# Copyright (C) 2015 Kushal Singh <[email protected]>
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#

BRANCH=${1}
FILEREGEX='\.([sScHh]|cpp)$'
ENDREGEX='^M$'

# If no branch but an option is given, unset BRANCH.
# Otherwise, consume this parameter.
if echo "${BRANCH}" | grep -q '^-'; then
BRANCH=""
else
if [ -n "${BRANCH}" ]; then
shift 1
fi
fi

# If the --diff-filter option is given, consume this parameter.
# Set the default DIFFFILTER option otherwise.
DIFFFILTER="${1}"
if echo "${DIFFFILTER}" | grep -q '^--diff-filter='; then
shift 1
else
DIFFFILTER="--diff-filter=ACMR"
fi

# select either all or only touched-in-branch files, filter through FILEREGEX
if [ -z "${BRANCH}" ]; then
FILES="$(git ls-tree -r --full-tree --name-only HEAD | grep -E ${FILEREGEX})"
else
FILES="$(git diff ${DIFFFILTER} --name-only ${BRANCH} | grep -E ${FILEREGEX})"
fi

if [ -z "${FILES}" ]; then
exit
fi

grep -E -R -l ${ENDREGEX} ${FILES} > /dev/null

if [ $? -eq 0 ]
then
echo "ERROR: carriage return error found"
exit 1
else
exit 0
fi
9 changes: 9 additions & 0 deletions dist/tools/travis-scripts/build_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ then
./dist/tools/externc/check.sh master
RESULT=$(set_result $? $RESULT)

./dist/tools/endingcheck/check.sh master --diff-filter=MR
RESULT=$(set_result $? $RESULT)

./dist/tools/endingcheck/check.sh master --diff-filter=AC
RESULT=$(set_result $? $RESULT)

./dist/tools/endingcheck/check.sh riot/master
RESULT=$(set_result $? $RESULT)

# TODO:
# Remove all but `master` parameters to cppcheck (and remove second
# invocation) once all warnings of cppcheck have been taken care of
Expand Down

0 comments on commit db97416

Please sign in to comment.