#!/usr/bin/env bash function remove-whitespace { # exclude file types # (ignore generated files/directories) exclude_paths=( "*/.git/*" ) exclude_files=( "*.lst" "*.map" "*.svd" "*.sym" ) unset help unset silent unset no_action unset path_args unset file_args unset ffunix unset files for arg in $@; do unset arg_found case ${arg} in -*u* | --unix) arg_found="true" ffunix="true" ;; -*h* | --help) arg_found="true" help="true" ;; -*n* | --no-action) arg_found="true" no_action="true" ;; -*s* | --silent) arg_found="true" silent="true" ;; *) ;; esac if [[ -n "${arg_found}" ]]; then continue fi if [[ -d "${arg}" ]]; then path_args+=("${arg}") continue elif [[ -f "${arg}" ]]; then file_args+=("${arg}") continue fi echo "(unrecognised argument: '${arg}')" done if [[ -n "${ffunix}" ]]; then sed_cmd='s/[[:space:]]\+$//' grep_regex=$'[[:space:]]+$' else sed_cmd='s/[[:blank:]]\+\(\r\?\)$/\1/' grep_regex=$'[[:blank:]]+\r?$' fi for arg in ${path_args[@]}; do files+=($( find "${arg}" \ ${exclude_paths[@]/#/-not -path } \ ${exclude_files[@]/#/-not -name } \ -type f \ -exec grep -EIq "${grep_regex}" {} \; \ -print )) done for arg in ${file_args[@]}; do grep -EIq "${grep_regex}" ${arg} && files+=("${arg}") done if [[ -z "${files[@]}" ]] && [[ -n "${path_args}" ]]; then echo "no files with trailing whitespace or dos style line endings found" return 0 fi if [[ -n "${help}" ]] || [[ -z "${files[@]}" ]]; then cat <