blob: a392b95c19a64e0c508677e0fb2d61891e88db79 [file]
#!/usr/bin/env bash
#
# Script to fix whitespace issues: trailing whitespace and DOS carriage returns.
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -e
REPO_ROOT=$(cd $(dirname $0) && git rev-parse --show-toplevel)
echo "Fixing whitespace issues in ${REPO_ROOT}"
# macOS requires an empty string argument for in-place sed edits.
if [[ "$OSTYPE" == "darwin"* ]]; then
SED_INPLACE=(sed -i '')
else
SED_INPLACE=(sed -i)
fi
FILES_MODIFIED=0
echo "Checking for trailing whitespace..."
TRAILING_WS_FILES=$(git grep -IE ' +$' | eval "grep -F -v 'lib/yamlcpp' | grep -F -v 'lib/Catch2' | grep -F -v 'lib/systemtap' | grep -F -v '.gold:' | grep -F -v '.test_input'" | cut -d: -f1 | sort -u || true)
if [ -n "$TRAILING_WS_FILES" ]; then
while IFS= read -r file; do
if [ -f "$file" ]; then
echo " Fixing trailing whitespace in: $file"
"${SED_INPLACE[@]}" 's/[[:space:]]*$//' "$file"
FILES_MODIFIED=$((FILES_MODIFIED + 1))
fi
done <<< "$TRAILING_WS_FILES"
fi
echo "Checking for DOS carriage returns..."
DOS_FILES=$(git grep -IE $'\r$' | eval "grep -F -v 'lib/yamlcpp' | grep -F -v 'lib/Catch2' | grep -F -v 'lib/systemtap' | grep -F -v '.test_input'" | cut -d: -f1 | sort -u || true)
if [ -n "$DOS_FILES" ]; then
while IFS= read -r file; do
if [ -f "$file" ]; then
echo " Removing DOS carriage returns from: $file"
"${SED_INPLACE[@]}" $'s/\r$//' "$file"
FILES_MODIFIED=$((FILES_MODIFIED + 1))
fi
done <<< "$DOS_FILES"
fi
if [ $FILES_MODIFIED -eq 0 ]; then
echo "Success! No whitespace issues found."
else
echo "Fixed whitespace issues in $FILES_MODIFIED file(s)."
fi
exit 0